ワードの「はがき宛名印刷ウィザード」で作成した「往復はがき」の文書と、エクセル住所録(320件)を添付したメールに、「宛名書きをヨロシク」とあった。
「予算は?」と問いたいところであるが、メールなので無理かぁ〜
その日はメールを見ただけで早寝。今朝は3時に起きて‥‥10時に完成した。印刷会社に頼んだ方が安いと思うが...(ぼやき)
- 気になるのが住所録
- エクセルなので「入力が自由」なのが一番の問題。
- 「筆ぐるめ」とか「筆まめ」,「はがきスタジオ」等の宛名印刷ソフトがあるが、入力の文字数に制限があるはず‥‥
案の定、メールに添付されている住所録,住所は「住所」と「住所2」があるが、入力ルールなどなし! 宛名は最高16文字もある。寿限無さんも顔負け‥‥
こんな感じなので、ワードの「はがき宛名印刷ウィザード」での宛名書きは無理。市販のソフトでも無理なはずだ。
そこで、
- 「はがき宛名印刷ウィザード」を使って「横書き」で宛名の文書を作成
- 袋とじ印刷で、往復はがきの返信面を作成
- 差し込みフィールドは手作りとした。
ワードの「はがき宛名印刷ウィザード」で往復はがきを作ると、2段組で、返信面にはテキストボックスが貼り付けてある設定になる。これでは「作成し難い」と思い、
-
- 袋とじ印刷で1ページずつ作る
- 宛名面の文字数が多い→行が増えてもズレないようにする
- 宛名面に画像があるため、アンカーの位置を1行目に(明確に)固定する
袋とじ印刷にした結果、(横置きとなるため)
-
- 余白の設定が「上下」が「左右」になる(ようだ)
- 印刷時、往復はがきを横にセットする羽目になった。
※ 住所を2分割するために作った Excel のユーザー定義
Attribute VB_Name = "UserMacro" Option Explicit Public Function get住所上(arg住所, Optional argMax文字数 As Long = 18) Dim str住所上, str住所下 Call set住所上下(arg住所, str住所上, str住所下, argMax文字数) get住所上 = str住所上 End Function Public Function get住所下(arg住所, Optional argMax文字数 As Long = 18) Dim str住所上, str住所下 Call set住所上下(arg住所, str住所上, str住所下, argMax文字数) get住所下 = str住所下 End Function Sub set住所上下(ByVal arg住所, arg住所上, arg住所下, Optional argMax文字数 As Long = 18) Dim i As Long, L As Long, L1 As Long, L2 As Long arg住所 = StrConv(Trim(arg住所), vbWide) L = Len(arg住所) If L <= argMax文字数 Then arg住所上 = arg住所 arg住所下 = "" Exit Sub End If i = InStr(arg住所, " ") If i = 0 Then i = InStr(arg住所, " ") If i = 0 Then '桁オーバー arg住所上 = "Error(" & L & ")" arg住所下 = "Error!" Exit Sub End If arg住所上 = Left(arg住所, i - 1) arg住所下 = Trim(Mid(arg住所, i + 1)) L1 = Len(arg住所上) L2 = Len(arg住所下) If L1 > argMax文字数 Or L2 > argMax文字数 Then arg住所上 = "Error(" & L1 & ")" arg住所下 = "Error(" & L2 & ")" End If End Sub
- Accessのように、半角/全角スペースを同一視してくれない。
- ユーザー定義関数を独立したファイルにしている時は、
- 開いておく
- 呼び出すときは、“=マクロ.xls!get住所上()”のように、ユーザー定義関数が入っているブック名を付ける必要がある(ようだ)
- XLStartに入れておくと、付けなくてもいい?(未確認)