はじめに
WORDの差込印刷機能では、どうも外部のデータファイルは絶対パスでしか指定出来ないようなので、ファイルをOnedriveなどで他人と共有したらリンク切れが起きてしまいます。
どうしても相対パスでは指定できないようです。
それで、データファイルのフォルダ名が変わっても問題なく差込印刷が可能な方法を考えました。
差込印刷のデータファイルをテキストで作成
差込みファイル
差込ファイル.txt
番号 氏名
1 鈴木一郎
2 田中花子
3 山田太郎
・フィールド区切りはtab(カンマでも可)
・1行目はタイトルとする
WORDファイル
結果のプレビュー
対応マクロ
ThisDocumentのOpenイベントに下記のコードを記載する
ファイルの拡張子をdocmで保存(docxではマクロを保存できないため)
Private Sub Document_Open()
Dim strPath As String
strPath = ThisDocument.Path & "\差込ファイル.txt" '相対パスのファイル名を指定する
Call ActiveDocument.MailMerge.OpenDataSource(strPath)
ThisDocument.Saved = True '未編集の時に「保存しますか」の確認を表示させない
End Sub
'以下のマクロを記述するとオープン時にSQLコマンドの確認メッセージが表示されない
Private Sub Document_Close()
Dim Saved As Boolean
Saved = ThisDocument.Saved
Call ActiveDocument.MailMerge.DataSource.Close
ThisDocument.Saved = Saved
End Sub
2023/1/25 追記
差込ファイル.txt をEXCELファイルに変えるとEXCELファイルで差込データを作成することも可能
その場合はOPEN時にシート名を選択する画面が表示されますが適切なシートを選んでOKを押下すればOK
やったこと
マクロの記録機能で、差込印刷の「既存のリストを使用」コマンドを実行して記録させて、生成されたコードから関係のなさそうな引数を削除し、外部ファイルのパス部分をThisDocumentのパスになるように変更