- ベストアンサー
Wordで差込印刷した後に別々のファイル名をつける
送付先毎に内容が異なる通知文を1000通作成する為に、まずExcelでテーブルを作り、Wordで差込用の文書を作り、Excelのデータを取り込むところまではやりましたが、これでは全て1つのファイルになってしまいます。(1件あたり3ページの通知なので3000ページの1Wordファイル) これを、差し込んだ後宛先毎に全て別のファイルとして(1000個のWordファイル)保存する方法はありませんでしょうか? 作成した通知文を各送付先毎のフォルダに分けて保存しなくてはならない為、必須事項なんです。 なんとか自動的に行いたいと思っています。 また、もし可能だった場合、各ファイル名はどんな形で割り当てられるのか・・・? 出来ればファイル名は顧客コード(Excelのデータテーブルには情報があります)で一発で保存できたら幸いです。 お知恵を下さい。どうぞよろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
以前、同様の処理をマクロを使って行いました。 WordのVBAを良く理解せずに作ってますので、あまりスマートではありませんが事は足りました。 差し込みメイン文書(事前に差し込み設定して保存した物)に下記マクロを仕込んで実行すると、メイン文書と同じフォルダに指定したフィールド値(例では4番目)で保存します。 試す場合はテスト環境で。 Sub Test1() Dim i As Long, LRec As Long With ThisDocument.MailMerge .DataSource.ActiveRecord = wdLastRecord LRec = .DataSource.ActiveRecord For i = 1 To LRec .Destination = wdSendToNewDocument .SuppressBlankLines = True .DataSource.FirstRecord = i .DataSource.LastRecord = i .DataSource.ActiveRecord = i .Execute Pause:=True ActiveDocument.SaveAs ThisDocument.Path & "\" & _ .DataSource.DataFields(4).Value & ".doc", wdFormatDocument 'ファイル名に使うフィールド(例では4番目) ActiveDocument.Close Next i End With End Sub
その他の回答 (2)
- papayuka
- ベストアンサー率45% (1388/3066)
#2です。 標準モジュールに書く方が普通かも知れませんが、該当文書のThisDocumentモジュールでも問題ありません。 >『このマクロは無効に設定されています・・・』といったメッセージが セキュリティレベルを「中」にした状態でWordを起動し、その後、該当ファイルを開けば「マクロ有効にしますか?」のような確認が出ると思います。 そこで「マクロ有効」にして開けば実行出来ると思いますが、、、 実行時に同じフォルダ内に同名ファイルがあった場合の上書きチェック等は特にしてませんので、試す場合はご注意下さい。
お礼
早速のご回答ありがとうございます。 ご指定の通り試したところ、分割できました。 本当に助かりました。 何度もお知恵をお借りして恐縮です。 ご協力ありがとうございました!
データのところで臨時にたとえば200件ずつならば200件分のファイルを作っておいて差込をし、終わったら削除するようにしたらいいですよ。
補足
早速のご回答ありがとうございます。 自動処理が出来ない場合は、マニュアルでこまめにやるしかないのかもしれませんね。 参考にさせて頂きます。 ありがとうございました。
補足
早速のご回答ありがとうございます。 もう、わらにもすがる思いです。一度ご経験がおありという事ですから心強いです! 私自身がVBAを理解していないので手ほどきを頂けませんでしょうか? やった作業を書き留めます。 「差込テンプレート.doc」に「差込データ.xls」を差込み、 「ツール」→「Visual Basic Editor」の「This Document」に Sub Test1() Dim i As Long, LRec As Long With ThisDocument.MailMerge .DataSource.ActiveRecord = wdLastRecord LRec = .DataSource.ActiveRecord For i = 1 To LRec .Destination = wdSendToNewDocument .SuppressBlankLines = True .DataSource.FirstRecord = i .DataSource.LastRecord = i .DataSource.ActiveRecord = i .Execute Pause:=True ActiveDocument.SaveAs ThisDocument.Path & "\" & _ .DataSource.DataFields(4).Value & ".doc", wdFormatDocument ActiveDocument.Close Next i End With End Sub と書いて「×」で閉じる。 マクロの実行をしましたが、『このマクロは無効に設定されています・・・』といったメッセージが立ち上がり、何も実行されません。 (果たしてこの手順でよいのかも疑問なのですが・・・) セキュリティレベルも下げて見ましたがうまくいかないのですが、 手順を今一度ご教示頂けませんでしょうかか?素人で本当に申し訳ございません。。。 どうぞよろしくお願いいたします。