Mihata
仕事効率化(DX)2026.10.12

Excel 差し込み印刷 文字化けの直し方|崩れ方3系統で振り分け

結論:崩れ方は3系統、直す場所がそれぞれ違う

Wordの差し込み印刷でExcelを差込元にしたとき、画面の崩れ方は大きく3系統に分かれます。①文字そのものが化ける(□や?、見慣れない記号になる)、②数値の桁や小数・パーセントが変わる、③日付の並びや見え方が変わる。読者はどれも「文字化け」と呼びますが、①は文字コード、②と③は接続方式と書式の問題で、直す場所がまったく違います。

②については Microsoft が症状を表で明示しています。パーセンテージの「50%」がWordでは「.5」、通貨の「$12.50」が「12.5」、郵便番号の「07865」が先頭ゼロの落ちた数値になる、という3例です。原因は「Wordの受信者リストのデータが、セルに適用された書式設定なしで、Excelが格納するネイティブ形式で表示されるため」と公式に書かれています。つまりExcel側で見えている書式はWordに渡っていないのが前提です。

直し方は3つの層があります。データ側(Excelの列をテキスト書式にする)/接続側(OLE DBをDDEに切り替える)/Word側(差込フィールドに書式スイッチを足す)。この記事では、まず症状で系統を振り分け、それぞれの最短手順と、切り替えたときに失うものまで書きます。

まず症状で振り分ける(見えている状態→原因→最短の直し方)

自分がどれに当たっているかを、この表で先に決めてください。系統をまたいだ対処をすると、直ったように見えて別の列が壊れます。

Word側で見えている状態

原因の系統

最短の直し方

日本語が「譁ー隕」「テスト」のような別の文字列になる

①文字コード(差込元がCSV/テキスト)

差込元を .xlsx に変える。CSVのままならエンコードを指定して開く

日本語が「□□□」や「???」になる

①文字コード、またはフォントが文字を持っていない

エンコードを指定して開く。直らなければ差込先の段落のフォントを日本語フォントに変える

50% が .5 になる

②接続方式(ネイティブ値が渡っている)

DDE接続に切り替える、または列をテキスト書式にする

¥12,500 が 12500 に、$12.50 が 12.5 になる

②接続方式

DDE接続、または差込フィールドに \# スイッチを足す

郵便番号 0789-… の先頭ゼロが消える

②データ側(数値として保存されている)

Excelで該当列を「文字列」書式にして保存し直す(公式の方法2)

小数が 1.2345678 のように余計な桁まで出る

②接続方式

\# スイッチで桁を固定する(表示桁の設定は渡らない)

2026/4/1 が 4/1/2026 や 1-Apr-26 になる

③日付の書式

\@ スイッチで "yyyy年M月d日" などを指定する

日付が 45383 のような数値で出る

③データ側(シリアル値が渡っている)

Excel側で日付として入っているか確認し、DDE接続に切り替える

「DDEリンクを確立できません」と出る

②接続側(DDEが使えない環境)

DDEを諦め、OLE DB+書式スイッチで作り直す

実務で多いのは、②と③が同時に起きていて「全部文字化け」と報告が上がってくるパターンです。1列ずつ、どの系統かを判定してから手を付けるのが遠回りに見えて最短です。差込元が数値として壊れている段階なら、エクセルの数値が文字列で集計されない時の直し方も先に確認しておくと、Excel側の状態がはっきりします。

系統①:文字そのものが化ける(差込元がCSVのとき)

原因はエンコードの自動判別の失敗

差込元が .xlsx のブックで、日本語が別の文字列に化けることはまずありません。化けるのは差込元がCSVやタブ区切りのテキストファイルのときです。Microsoftはテキストファイルを開くときの挙動について、文字が「garbled or as question marks or boxes(文字化け、あるいは疑問符や四角)」に見える場合は「Wordがエンコード標準を正確に検出できなかった可能性がある」と説明しています。自動判別に失敗すると、UTF-8のファイルをShift_JISとして読む(またはその逆)ことになり、日本語が別の文字列として展開されます。

この系統の見分け方は単純です。英数字だけが正しく、日本語の列だけが崩れているなら文字コードです。数値の桁や日付の並びだけが変なら、こちらではなく系統②③です。

直し方:.xlsxに変えるか、エンコードを指定して開く

いちばん確実なのは、CSVをExcelで正しく開いてから.xlsx として保存し、それを差込元にすることです。文字コードの話がWordから消えるので、以後この症状は起きません。CSVのまま使う必要があるときは、Wordにエンコードを明示します。公式の手順は次の流れです。

  1. Wordで[ファイル]>[オプション]>[詳細設定]を開く。
  2. [全般]セクションの[文書を開くときにファイル形式の変換を確認する]にチェックを入れて[OK]。
  3. ファイルを開き直すと[ファイルの変換]ダイアログが出るので、[エンコードされたテキスト]を選ぶ。
  4. [ファイルの変換]ダイアログで[その他のエンコード方法]を選び、エンコード標準を選ぶ。プレビューで日本語が読めるものが正解。

保存側で指定する手順もあり、こちらは[名前を付けて保存]でファイルの種類を「書式なし」にすると同じダイアログが出ます。公式は「Unicode以外のエンコードで保存すると、一部の文字が表示できなくなる可能性がある」と注意しており、互換性のためにどうしても必要なとき以外はUnicodeのままにしておくのが無難です。CSV側の文字化けを元から断つ手順は、エクセルCSV文字化けの直し方3つにまとめてあります。

チェックを入れた[文書を開くときにファイル形式の変換を確認する]は、そのままにしておくと以後すべての文書を開くたびにダイアログが出ます。差し込みの設定が終わったら戻しておく、という後片付けまで手順に入れてください。なおこの設定は、次に出てくるDDE接続でも使う同じスイッチです。

系統②:数値の桁・小数・パーセントが変わる

既定の接続はOLE DBで、書式は渡らない

Microsoftは「By default, Word uses OLEDB to connect to the data source(既定でWordはOLE DBを使ってデータソースに接続する)」と明記しています。OLE DBはセルの値を取りに行く仕組みなので、セルの書式設定(通貨・パーセンテージ・表示桁数)はWordに届きません。だから50%は0.5という素の値で、¥12,500は12500という素の値で差し込まれます。これはバグではなく仕様です。

先頭ゼロが落ちる郵便番号は、少し性質が違います。Excel側で数値として保存されていると、そもそも値が 7865 なので、接続方式を変えても戻りません。公式の「方法2」も、Excelで該当列を選び[ホーム]>[セル]>[書式]>[セルの書式設定]>[数値]タブ>[カテゴリ]で[文字列]を選んで保存し直す、というデータ側の修正を指示しています。差込元を準備する段のガイドでも「郵便番号を文字列として書式設定する必要があります。文字列として書式設定されていない場合、差し込み印刷中にコードの先頭のゼロ(00399など)が消えます」と書かれています。

方法1:DDE接続に切り替える

Excelで見えているとおりの書式で差し込みたいなら、接続方式をDDE(動的データ交換)に変えます。Microsoftが公式に案内している手順はこうです。

  1. Wordを起動し、新しい空白の文書を開く。
  2. [ファイル]>[オプション]>[詳細設定]の[全般]で[文書を開くときにファイル形式の変換を確認する]にチェックを入れて[OK]。
  3. [差し込み文書]タブ>[差し込み印刷の開始]>[差し込み印刷ウィザード]を選ぶ。
  4. 文書の種類、ひな形の選択を進め、[宛先の選択]で[既存のリストを使用]>[参照]。
  5. [データソースの選択]で対象のExcelブックを選び[開く]。
  6. [データファイル形式の確認]ダイアログで[すべて表示]にチェックし、[MS Excel ワークシート via DDE (*.xls)]を選んで[OK]。
  7. [Microsoft Excel]ダイアログの[名前付き範囲またはセル範囲]で、使うシートか範囲を選んで[OK]。

公式は、この手順のあと「データが、Excelワークシートに表示されるのと同じ書式で[差し込み印刷の宛先]ダイアログに表示されるようになる」と説明しています。パーセント・通貨・日付がまとめて揃うので、列が多い帳票ではこれが一番速い手です。

DDEに切り替えると何が変わるか(落とし穴)

ここは正直に書きます。DDEはExcelをWordが裏で起動して会話する古い仕組みで、環境によっては使えません。実際に多いのが「DDEリンクを確立できません」「WordはExcelとのDDE接続を再確立できませんでした」というエラーで、この状態になると差し込み自体が進まなくなります。

  • Excel側のオプションで塞がれていることがある:[Excelのオプション]>[詳細設定]>[全般]の「動的データ交換(DDE)を使用する他のアプリケーションを無視する」がオンだと、接続が成立しません。
  • トラストセンターの設定が絡む:Microsoftは、Excelのトラストセンター([ファイル]>[オプション]>[トラストセンター]>[トラストセンターの設定]>[外部コンテンツ])に「動的データ Exchange Server 参照を有効にする」(既定でオン)と「動的データ Exchange Server の起動を有効にする(推奨されません)」(既定でオフ)の2つがあると説明しています。後者はセキュリティのためオフのままを推奨とされており、組織のポリシーで固定されている場合もあります。
  • 差込元の指定の仕方が変わる:DDEではシートやセル範囲を選ぶダイアログが入るため、列の追加・シート名の変更に弱くなります。毎月同じブックを使い回す運用だと、ある月だけ差し込めないという事故が起きます。
  • 自動化には向かない:Excelを常駐させる前提なので、無人のバッチ処理に組み込むと途中で止まりやすくなります。

したがって現場での判断は、一度きり・列が多い帳票ならDDE、毎月回す仕組みならOLE DB+書式スイッチです。DDEは「今日の印刷を通すための手」と割り切るほうが、後の担当者が困りません。

差し込み印刷そのものが毎月の定例になっているなら、表の作り方から見直したほうが早い場合もあります。私たちはスプレッドシートを社内アプリに置き換える支援もしております。記事の途中で恐縮ですが、よろしければ合わせてご覧いただけたら嬉しいです。

Word側で書式を固定する(\# と \@ スイッチ)

接続方式を変えられない環境でも、差込フィールドに書式スイッチを足せばWord側で見え方を固定できます。Microsoftは、日付・電話番号・通貨が正しく結合されないときの回避策として、数値書式スイッチ(\#)と日付時刻書式スイッチ(\@)を挙げています。公式の例はこうです。

  • 通貨:{ MERGEFIELD number \# $####,0.0 }
  • 電話番号:{ MERGEFIELD phone \# ###'-'###'-'#### }
  • 日付:{ MERGEFIELD date \@ "MMMM d, yyyy" }

日本語の帳票なら、金額は \# "¥#,##0"、日付は \@ "yyyy年M月d日" のように書き換えます。書き方の手順は、差込フィールドを選んでShift+F9でフィールドコードを表示し、閉じ波かっこの手前にスイッチを書き足してF9で更新するだけです。

公式が注意している点を3つ、そのまま押さえておいてください。1つ目は「The picture switch is case-sensitive(書式スイッチは大文字と小文字を区別する)」。月の MM と分の mm を間違えると意図しない値になります。2つ目は、スペースや文字を含む複雑な書式は引用符で囲む必要があること。単純な数値書式なら引用符は不要です。3つ目は、フィールドを更新すると適用していた文字書式が失われることがあるため、保持したいときは \* MERGEFORMAT を併記するという点です。

この方法の良いところは、差込元のExcelに手を入れずに済むことです。他部署が作っているブックを差込元にしていて勝手に直せない、という場面ではこれしか選べません。逆に弱点は、列が20も30もあると書き足す作業が延々と続くことと、ひな形を作り直すと消えてしまうことです。

系統③:日付が意図しない形で出る

日付は、系統②と同じ理由(ネイティブ値が渡る)に加えて、Excel側で本当に日付になっているかという問題が重なります。セルが文字列として「2026/4/1」を持っているだけなら、Wordにはその文字列が渡るので崩れません。逆にExcel側で日付のシリアル値として持っていると、接続方式と書式の組み合わせによって見え方が変わります。

現場で多いのは、月や日の並びが入れ替わる(2026/4/1 が 4/1/2026 になる)ケースです。これは \@ スイッチで "yyyy年M月d日" を指定すれば止まります。もう1つ、Word側に 45383 のような数値が出てしまう報告もあります。これは差込元の日付がシリアル値のまま渡っている状態で、Excel側の表示形式だけを直しても解決しないため、\@ スイッチかDDE接続のどちらかが必要になります。Excel側でそもそも日付が数値に化けている段階なら、エクセルで日付がシリアル値(数値)になる原因と直し方で先にデータ側を整えてから差し込んだほうが確実です。

逆の事故にも触れておきます。差込元に「4-1」「1/4」のような曖昧な入力が混ざっていると、Excelが開いた時点で別の日付に変換していることがあります。Wordで直す前に、差込元の列をいったん標準書式にして中身の数値を確認するひと手間を挟んでください。Excelが開いた時点で別の日付に変換してしまう挙動は、入力時の書式設定で止められます。

差込元の作り方で防げること

Microsoftは差込元のExcelについて、「すべてのデータが整形され、1つのシートにまとまっていればWordが読める」としています。あわせて、公式が明記している制約と注意がいくつかあります。

  • パーセンテージの列は、100倍されることを前提に扱う。公式は「カテゴリにパーセンテージを選んだ場合は、パーセンテージの書式設定がセルの値に100を乗算することに注意」「この乗算係数を回避したい場合は、パーセンテージ列の書式設定に文字列を選択」としています。
  • 郵便番号・電話番号・社員番号など、先頭ゼロが意味を持つ列は文字列にする。数値として持っている限り、先頭ゼロは差し込みで落ちます。
  • HTTPの場所に置いたファイルは差込元にできない。公式は「どの種類のファイルをデータソースに使う場合でも、ローカルのコンピューターかファイル共有に保存してください。HTTPの場所に保存したものは差し込み印刷ではサポートされません」と書いています。SharePointやクラウドのURLを直接指定して失敗する場合は、まずローカルに落として試してください。
  • 1行目は列見出しにする。差込フィールド名は見出し行から作られるため、見出しが無い・結合セルになっていると列の対応がずれます。

実務では、差込専用のシートを1枚作るのが結局いちばん楽です。もとの台帳には触らず、差し込みに必要な列だけを文字列として並べた1枚を作り、そこを差込元にする。見た目の整った台帳をそのまま差込元にしようとすると、結合セル・小計行・複数シートで必ずどこかが崩れます。

断定できないこと(バージョン差・Mac版・環境依存)

この記事の手順は、Microsoftが公開している解決策をそのまま辿っていますが、すべての環境で同じ画面になるとは言えません。正直に書いておきます。

まず、DDE接続の公式手順はWindows版のWordを前提にした画面構成([ファイル]>[オプション]>[詳細設定])で説明されています。Mac版のWordはオプションの構成が異なり、同じ項目を同じ場所で見つけられるとは限りません。Mac版での差込元については、公式が「タブ文字かカンマで区切られたテキストファイルを使える」と別建てで案内しており、Windowsとは勧め方が違います。Macでパーセントや通貨が崩れる場合は、DDEを探すより\# と \@ スイッチ、または差込元の列を文字列にする方向で解決するのが現実的だと考えています。

次に、DDEが通るかどうかはOfficeのビルドと組織のセキュリティ設定に左右されます。公式はトラストセンターの「動的データ Exchange Server の起動を有効にする」をオフ推奨としており、新しいビルドほどDDEの扱いは厳しくなる方向です。「去年は同じ手順でできたのに今年は通らない」という相談は、この文脈で起きていると見ています。ここは断定できないので、試して通らなければ早めにOLE DB+スイッチへ切り替えてください。

ダイアログの表記も、言語とバージョンで揺れます。本記事では[MS Excel ワークシート via DDE (*.xls)]と書きましたが、環境によっては「Microsoft Excel ワークシート DDE (*.xls)」のように見えます。名前が完全一致しなくても「DDE」という語が入っている項目を選べば同じものです。

再発防止:毎月やるなら差し込み印刷から降りる

一度きりの案内文なら、ここまでの手順で十分です。問題は、請求書・納品書・宛名ラベル・案内状を毎月同じ手順で差し込んでいる場合です。差し込み印刷は、Excelの台帳とWordのひな形という2つのファイルが揃って初めて動く仕組みなので、どちらかを誰かが直すと翌月だけ壊れます。しかも壊れ方が「文字化け」なので、原因が接続方式なのか書式なのか、担当者には区別がつきません。

現場で効く手当ては3つあります。1つ目は、差込専用シートを作って台帳と分けること。2つ目は、Wordのひな形に書式スイッチを入れた状態でテンプレートとして保存し、毎月それをコピーして使うこと。ひな形を作り直す運用をやめるだけで、スイッチが消える事故が止まります。3つ目は、差し込みの前後に「1件目を印刷プレビューで目視」を手順として固定することです。10件のうち1件だけ崩れるパターンは、プレビューでしか見つかりません。

それでも毎月数時間が消えているなら、台帳から帳票を直接出す形に作り替えるほうが早い段階です。スプレッドシートに入力画面と出力を分けて持たせれば、差込元の書式という概念そのものが無くなります。Mihataでは、Excel・Wordで回している帳票づくりを、見た目を変えないまま社内アプリへ置き換える支援をしています。同じ台帳を複数の人が別々に転記している状態なら、Excel二重入力をなくす|転記の重複・不整合を一元化も先に読んでおくと、どこから手を付けるかの判断がしやすくなります。

よくある質問

差し込み印刷の文字化けは、どこから直せばいいですか?

崩れ方で分けてください。日本語そのものが別の文字列や□になるなら文字コードの問題で、差込元がCSVのときに起きます。数値の桁やパーセント、日付の並びが変わるだけなら文字コードではなく、接続方式と書式の問題です。前者は差込元を.xlsxにする、後者はDDE接続に切り替えるか書式スイッチを足すのが最短です。

Excelで50%と表示している数値が、Wordで.5になります。

仕様です。Microsoftは既定でWordがOLE DBでデータソースに接続し、セルに適用された書式設定なしでExcelが格納するネイティブ形式の値を表示すると説明しています。公式には、DDEを使ってExcelに接続する方法と、該当列を文字列として書式設定する方法の2つが案内されています。差込フィールドに数値書式スイッチを足して固定する手もあります。

DDE接続の切り替え方を教えてください。

Wordで[ファイル]>[オプション]>[詳細設定]>[全般]の[文書を開くときにファイル形式の変換を確認する]にチェックを入れ、差し込み印刷ウィザードから既存のリストを参照します。[データファイル形式の確認]ダイアログで[すべて表示]にチェックし、DDEと書かれたMS Excel ワークシートの項目を選び、使うシートかセル範囲を指定します。

郵便番号の先頭のゼロが消えてしまいます。

Excel側で数値として保存されているため、値そのものにゼロが無い状態です。接続方式を変えても戻りません。該当列を選び[ホーム]>[セル]>[書式]>[セルの書式設定]>[数値]タブで[文字列]を選んで保存し直してから差し込んでください。公式も、文字列として書式設定していないと差し込み中に先頭のゼロが消えると明記しています。

DDEリンクを確立できないと出て進めません。

DDEはExcelを裏で起動して会話する古い仕組みで、環境によっては通りません。Excelのオプションで「動的データ交換(DDE)を使用する他のアプリケーションを無視する」がオンになっていないか、トラストセンターの外部コンテンツの設定が絞られていないかを確認してください。通らない場合はDDEを諦め、既定のOLE DB接続のまま差込フィールドに書式スイッチを足す形に作り替えるほうが確実です。

まずはお気軽にご相談ください

AI・IT・デザインに関するお悩みやご相談、お見積りのご依頼など、
どんなことでもお気軽にお問い合わせください。

お問い合わせ