まりふのひと

Wordの差し込み文書にExcelの日付の書式が反映されない‥‥

 23日の iPS学習会で、Excelの名簿からWord2016の差し込み文書で名札を作っていた方が「日付の表示が変です...」と。帰宅後、Word2013で調べたら色々出てきたぁ~~~

(追加キーワード:国コード;ローカル)


≪目次≫


差し込みフィールドにExcelの書式が反映されていない

日付と数値を差し込みフィールドにした時の具体例

 何時ものように作った‥‥

  1. 差し込む Excelブック
    f:id:ogohnohito:20190824172757p:plain:w600
    • 西暦:書式は yyyy/mm/dd
    • 和暦:入力は =A2、書式は yyyy年(ggge年) m月d日 aaaa
    • 基準日:入力は =Today()
    • 経過日数:入力は =DateDif(A2,C2,"D")、書式はカンマ区切りスタイル
    • 年齢:入力は =DateDif(A2,C2,"Y")
  2. 差し込み文書
    f:id:ogohnohito:20190824173250p:plain:w320
  3. 結果のプレビュー
    f:id:ogohnohito:20190824183906p:plain:w320
    • 和暦Excelの書式は反映されておらず、しかも m/d/yyyy で表示されている。
    • 経過日数カンマが入っていない。
  4. 差し込む表を、Excelの表をWordに貼り付けたものに変える‥‥ と
    f:id:ogohnohito:20190824184811p:plain:w320
    • Excelの書式と一致した。(Wordの表と一致した‥‥ ということ)


グーグル先生に教えてもらったこと

差し込み印刷をした日付の表示が違う、というときに(引用:クリエアナブキのちょこテク)

www.crie.co.jp
 Excel のデータを Word の差し込み印刷でしようとしたとき、挿入した日付は、「5/19/2013」という形式で表示されます。Excel で「2013/5/19」となるように書式設定をしてあっても、Word に挿入した結果にはその書式は反映されないため、Word にフィールドを挿入後、フィールドの書式設定を追加する必要があります

差し込み印刷時に、日付の表示形式を変更したい(引用:マイクロソフト コミュニティ)

answers.microsoft.com
生田 裕恒
 差し込み印刷とは、他のアプリケーションのデータをワードに転送して連結するということです。
これを遂行するには、アプリケーションの間で、どのように接続して転送するかの方法・方式が複数あります。
  • OLEDB(オブジェクト リンキング アンド エンベッディング データ ベース)方式
  • DDE(ダイナミック データ エクスチェンジ)方式
前者のOLEDB接続形式は、エクセルにおいて付加された表示書式を転送出来ません。エクセル本来の表示書式のみが転送の対象となります。
一方、DDE接続形式は、エクセルで付加された表示書式も伴って転送されます
森 快二
 手元で確認したところ、以下の手順で設定するとうまくいきました。
 まず、[ファイル] → [オプション] → [詳細設定] の順にクリックし、全般の項目で以下の部分にチェックをつけ、画面を [OK] で閉じます。
続いて、[差し込み文書] タブの [宛先の選択] から当該の Excel ファイルを開きます。
 すると以下の画面が表示されると思うので「すべて表示」にチェックをつけます。
さらに以下の画面が表示されるので「Microsoft ExcelワークシートDDE(*.xls)」を選択し、[OK] をクリックします。
 早速、Word2013で試したが、DDEリンクに失敗した。

  1. 差し込み印刷文書を開き、
  2. ☑文書を開くときにファイル形式の変換を確認する にチェックを入れた。
  3. f:id:ogohnohito:20190825115402p:plain:right:w320[宛名の選択]から当該 Excelファイルを開く。
    • これまでは「OLEDB」で開く‥‥ と言っているのであろう。
  4. ☑全て表示 して、
  5. f:id:ogohnohito:20190825115848p:plain:right:w320Microsoft ExcelワークシートDDE を選択し、[OK]。
     ここで気になったことは‥‥
    • 開こうとしている Excel ワークシートの拡張子は.xlsxなのに、
    • Microsoft Excel ワークシートDDE(*.xls)』と.xlsx の拡張子はない。
    • 下方にある『Excel Files ODBC(*.xls,xlsx,xlsm,xlsb)』には.xlsx が載っているのに...
  6. 暫くして‥‥f:id:ogohnohito:20190825120704p:plain:right:w320
    問題が発生しましたぁ~
  7. [閉じる]と(後ろにあった画面)
    f:id:ogohnohito:20190825121017p:plain:w560
    Excelに対して再度DDE接続を行うことはできません』と言われたので、
  8. [OK]で閉じる。

💡 参考

  1. 5.で.xlsx が載っていないので、差し込む.xlsxワークシートを『Excel 97-2003 ブック(*.xls)』で名前を付けて保存し試した。
  2. 3.のデータファイル形式の確認でf:id:ogohnohito:20190826100840p:plain:right:w320
    Microsoft Excel ワークシートDDE(*.xls)』が載った。
  3. これを選択した‥‥ が、結果は変わらなかった。
ワード2013にエクセルのデータを差し込み時にエラー(引用:マイクロソフト コミュニティ)


answers.microsoft.com
楠部 啓
 「データ ファイル形式の確認」 の画面で [Microsoft Excel シート DDE (*.xls)] を選択すると、こちらでも同じエラーが発生しました。
差し込み印刷用の Excel ブックを開いた状態で DDE を使った差し込み印刷の手順を行うと、Word の動作が遅くなったような感じにはなりましたが、Excel ブックの書式設定を反映した状態で差し込むことが出来ました。
差し込み印刷用の Excel ブックを開いた状態で差し込み印刷を行うとどのようになるか試してみてください。
 早速、試したら、色々(エラーも)出た‥‥ が、最終的には成功したッ!

結論

 下記で成功したが、あくまでも応急処置であろう。

  1. まず、差し込み印刷用の Excel ブックを開く。
  2. 次に、Word差し込み印刷文書を開く。
    • 『この文書を開くと、次のSQLコマンドが実行されます』が出るので、[いいえ]で応答する。
      • これはリンクを張り替えるためで、必須か否かは不明。
    • 💡DDE接続するには、次の設定をしておく必要がある。(一度でよい)
      1. [ファイル]⇒ オプション ⇒ 詳細設定 と進み、
      2. 全般までスクロールし、
      3. 文書を開くときにファイル形式の変換を確認する にチェックを入れる。
      4. [OK]で閉じる。
  3. [宛先の選択]を行う。
    • 手順は、上述「差し込み印刷時に、日付の表示形式を変更したい」と同じ。
    • 問題が発生しました」が出る*1 が、そのまま待っている‥‥
  4. 落ち着いたところで、[結果のプレビュー]する。
  5. 問題ないようであれば、
    1. 「問題が発生しました」を閉じ、
    2. 上書き保存する。

💡 ヒント

  • 印刷テストは行っていない。しかし、レターで保存出来ているので、問題ないと思う。
  • 次に同じ 差し込み印刷文書を開く時は、
    1. 事前に差し込むExcelブック(ワークシート)を開いておき、
    2. 『この文書を開くと、次のSQLコマンドが実行されます』は[はい]で応答する。
    3. また「問題が発生しました」が出る*2 が、無視してよい。


Excelの日付の書式の問題点

書式「元号年(西暦年)」では正しく表示されない...

f:id:ogohnohito:20190824161448p:plain:w512

  1. セルA2に「1943/3/24」を入力。セルB2:D2は、すべて「=A2」。
  2. 書式「yyyy年(ggge年) m月d日」(セルC2)は正常に表示されるが、
  3. 書式「ggge年(yyyy年) m月d日」(セルD2)は書式どおりに表示されない


Excel(エクセル)で和暦と西暦の表示形式を「元号(西暦)月日」とする時の注意(引用:ぱそこんる~む123 2015-01-12)

ameblo.jp
 Goole先生に伺うと、Excel(エクセル)2007からは「ロケール識別子」と言う物が加わってので、西暦を表すには「英語 (U.S.)」の識別子「1033」を付加する必要があるとありました。
 Excel(エクセル)2013での正解は
"平成"[$-411]e"年("yyyy"年)"m"月"d"日["aaa"]"
(411は日本語の「ロケール識別子」)の様です。
「‥‥ の様、、です」で終わってはいけないので、しつこくグーグル先生に聞いた...

ロケール ID (LCID) の一覧表(引用:VBScript関数リファレンス)

www.kanaya440.com
ロケール ID (LCID) の一覧表
 ロケール ID(LCID:LoCale IDentifiers)は、言語を表すコードであり、Windowsの地域設定などでも使用されています。
ロケール言語コード16進値10進数
英語 (U.S.) en-us0x04091033
日本語ja0x04111041
韓国語ko0x04121042
中国語zh-cn0x08042052

ロケールID番号(LCID)一覧(引用:インストラクターのネタ帳 2007年07月10日)

www.relief.jp
 マイクロソフト製品で使用されている言語ごとのロケールID(LCID)を、「言語固有のファイルのロケール ID 番号」「Visual Basic Scripting Editionロケール ID (LCID) の一覧」を参考に一覧にしておきます。

和暦と西暦を同時に表示させる(引用:エクセルの使い方 2015年2月27日)

excel-2013.blogspot.com
平成27年(2015年)の形式で表示する
 Excel2013で、この形式は書式設定ではできません。その為、TEXT関数を使用します。

結論

 最終的には「エクセルの使い方」さん言っているとおりのようだ。
そこで上述の Excel を作り直した。f:id:ogohnohito:20190827074613p:plain:right:w600

  • セルB7 は書式で対応せず Text関数を入力した。
     =TEXT(B2,"ggge年") & TEXT(B2,"(yyyy年)m月d日 aaaa")
  • その後、差し込み文書を作ったが、f:id:ogohnohito:20190827075240p:plain:right:w320
    チャンと表示できた。

参考)local と locale の違い

local と locale の違いを教えてください(引用:Yahoo!知恵袋

detail.chiebukuro.yahoo.co.jp
 英英辞書で調べてみました。
localは、地方(地域)や支店や支社などのこと、
localeは事件の現場や物語の設定上の場所(舞台)などをいうとのことです。
 恥ずかしながら、localはロクルと発音し、localeがロカルと発音するのを初めて知りました。ずっと、ローカルと発音してました。発音を直す良い機会になりました。

goo辞書より引用 ‥‥ 発音を知りたくて

f:id:ogohnohito:20130520050353p:plain

*1:Word2013では出たが、鳥越分室で行ったWord2016では出なかった。

*2:Word2013は出たが、Word2016は出ない