Wordの差し込み印刷でフィールドを駆使してさらに便利にしてみる

<font color="gray">
まずはじめに、この記事は半分備忘録を兼ねての投稿なので、変に長かったり回りくどかったりしますが、予め（ｒｙ
</font>
<br><br>
こんにちは。おはよう。こんばんは。あるいは、おやすみなさい。


皆さんはWordの差し込み印刷使ってますか？
私は仕事ではがきや封筒の制作～発送を代行で行うこともあるので、かなり活用しています。
個人宛（～様）なら、そんなに困ることはないのですが、これが会社や部署宛（～御中）だと問題が出てきます。

## 宛名が長すぎる問題
個人宛なら会社名や部署名は、フォントサイズ小さくして横に添えてごまかすことはできますし、個人名は長くても姓名の間スペース含めて、7文字ぐらいで収まるのでいけます。

これが会社・部署宛（～御中）となると、くっそ長い会社名に部署名あるんですよね…
実在する会社名を例に「コカ・コーラ ボトラーズジャパンホールディングス 御中」とかもう泣きたくなりますね。<font color="#99999">（横書きにすればある程度解決できるのは置いといて…）</font>
　
そんな時は…

### 長い会社名に合せてフォントサイズを小さくその場しのぎの術！:spy:
当初はそんなことしていました。
ですが、社名や部署も千差万別！いきなり短い会社名が来た時、すっごい間の空いた寂しい感じになってしまうので、レコードを変えつつ手動でフォントサイズを変えて印刷して～なんかもやっていました。なんかスマートじゃない…

## そんなことしないで、フィールドコードで柔軟に対応できるやん！
正確には、フィールドとExcel表のデータをダブルで活用します。

### Excelのデータはこんな風に作りましたよ。
![aaaa.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3150980/9134fc4d-8bc2-43fb-85b9-d7bb90183ff6.jpeg)

#### Excelのデータを作るにあたって
細かい数式は省略しますが、だいたいこんな感じで作ってます。
- 灰色の部分は数式で引っ張って表示しているだけ
  - 「営業所支店」があれば「社名（印刷用）」に社名を表示
  - 「宛名」は「社名」と「営業所支店」をくっつけて表示
- 文字数はそれぞれの「宛名」からLEN()関数で表示


#### ExcelのデータをWordに読み込ませましょう
さて、このExcelのデータ(xlsx)を実際にWordで読み込んでみましょう。
メニュー「差し込み文書」→「宛先の選択」→「既存のリストを使用」

読み込んだら、「差し込みフィールドの挿入」で試しに「宛名」フィールドを挿入します。
この時、自動的にフィールドコードが生成されています。

No.2の長い宛名が忌々しい…文字数を見ると、22文字です。縦書きにすると間違いなくあふれてしまいますね。フォントサイズを小さくすると、No.3の短い社名の場合、間が空いてしまいます。


## ★フィールドコードの出番★
フィールドを挿入した時点でフィールドコードは自動的に生成されています。
どのように生成されているか見てみましょう。**ALT+F9** を押してみてください。
 
::: note info
ALT+F9でフィールコードの表示/非表示を行います。
:::


``` 
{ MERGEFIELD 宛名 }
```

{}でくくってそれぞれの要素を半角スペースで区切っています。
MERGEFIELD フィールド名（Excel表のヘッダ名） で表示できるようです。
そんなフィールドコードですが、IF文が存在します。

```
{ IF {MERGEFIELD ●● } = 条件 {条件に合えば(TRUE)} {条件に合わない場合(FALSE)} }
```

 上記書式ならって、文字数のフィールドを参照しつつ、～文字以上だったら、フォントサイズを小さく、それ以外はフォントサイズは大きくというのを設定しましょう。
 
*ちなみに { } は**タイプしての記述ではなく、CTRL+F9** を押して挿入しましょう。*

:::note info
CTRL+F9 でフィールコードの { } を挿入
※挿入後にカッコ内側にあるスペースを消さないよう注意
:::


:::note warn
 Wordですが、Microsoftの~~💩~~仕様がありまして、**必ずショートカットを覚えて使用して**ください。私の環境では、タイプしてだとフィールドコードとして認識されませんでした。そして、**フィールドコードをいじったら、必ずフィールドの更新**を行いましょう。
:::

さぁ、記述してみます。
```:Wordフィールドコード
{ IF { MERGEFIELD 文字数 } >= 10 { MERGEFIELD 宛名 } { MERGEFIELD 宛名 } }
```
これで10文字以上の場合の条件が書けました。
10文字以上だったら、左側の条件で表示され、以下だったら、右側が表示されます。

フォントサイズの指定は？**となりますが、フィールドコード { MERGEFIELD 宛名 } を選択して、サイズを変更しましょう。そのまま書式が適用されます。

設定できたら、ALT＋F9で表示をプレビュー表示の状態にしてみましょう。
この時に、フィールド部分（灰色）内で右クリックして、**フィールド更新**をしましょう。


これで反映されます。

## それでも長くて対応できない！
そんな時は条件で宛名を営業所支店名にしましょう。
IFをネストして、第1条件10文字を超えて、さらに20文字を超えるようであれば営業所や支店フィールドにすることで、スマートになります。
```:Wordフィールドコード（ネストの例）
{ IF { MERGEFIELD 文字数 } >= 10 {IF { MERGEFIELD 文字数 } >= 20 { MERGEFIELD 営業所や支店 } { MERGEFIELD 宛名 }} { MERGEFIELD 宛名 } }
```
社名は「社名（印刷用）」フィールドを使って別のフィールドに入れましょう。

Excelの表データも細かく分けておくと、フィールドコードで条件分けするときに表示も応用が利くので便利です。

これでスマートになりました🥳

## ちなみに
テキストボックスにフィールドコードを入れて使う事が多いと思うのですが、条件文などでフィールドコードが長くなると可読性が悪く編集が大変になります。コードのコピペもできないので、注意が必要です。

レイアウトの位置やサイズの値を覚えておいて、一時的に広げる等対応が必要になってくる場合があります。


↓は封筒（長３）に差し込み印刷＋フィールドコードを設定した状態

![キャプチャ](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3150980/bc9a9652-8802-4e38-8c89-14c1dbca4d75.png)
Excel表のデータのヘッダー名は多少違いますが、宛名は先ほどの解説とほぼ同じ表示にしています。敬称も文字数に応じて、フォントサイズを変えています。

￥マークが見えますが、住所１フィールドの数字を漢数字に変換するオプション ￥v になります。表段階で漢数字に置き換えているので、ほぼ使ってません。

```:Wordフィールドコード
{ MERGEFIELD 住所1 ￥v }
```
（表示上￥マークは全角にしていますが、実際は半角です。）
　
Word側でフィールドコード編集ボックスみたいなの表示してくれればいいんですけど、どうにかならないんですかねぇ～😮‍💨

## 差し込み印刷用のExcel表を作るにあたって便利なソフト（特に住所関連）
さらに番外編！特に住所とか縦書きにするとき、漢数字にしたり、 -（ハイフン）をー（長音記号）に置き換えたり、英文字を全角にしたり、サクッとやりたいとき、便利なフリーソフトがあります。

置換もわざわざ正規表現使って、やったりなどめんどくさいので、こちらのソフトで必要な変換だけサクッとできますので、超おすすめ。いろんな置換に対応しているボタン、細かい設定など、本当に役立ちます。

https://www.vector.co.jp/soft/win95/util/se163168.html


記事としてうまくまとめられなかったのは重々承知ですが、何かありましたらコメントくださいです😓