ExcelのVBAでWordの差し込み印刷を行う、自分なりに納得のいく正解を見つけた気がするので記事にします。
Wordのドキュメントにセルの値を代入しようとするときに、いつもの方法で
wdDoc.Paragraphs(2).Range.Text = Range("A1").value
という方法で代入しようと思います。
実はこの.Range.textは上書きモードであり、既存の行を消去してしまい、下の行が繰り上がったり、段落が崩れたりします。
なので上記のコードで差し込み印刷を行う場合は
'.Paragraphs(2).Range.InsertBefore Text:= で段落の先頭に文字列を挿入
wdDoc.Paragraphs(2).Range.InsertBefore Text:= Range("A1").value
が正しい方法だと思われます。
段落の先頭に挿入するので改行コードを消しませんし、ダミーの文字列がある場合はその文字列の前に挿入されてしまいます。
次に私なりに納得のいく答えです
オチ Replace関数で置換するだけ
Sub 差し込み印刷()
Dim wdApp As Object, wdDoc As Object
' Wordアプリケーションをセット
Set wdApp = CreateObject("Word.Application")
' Word文書を開く(パスを指定)
Set wdDoc = wdApp.Documents.Open("ファイルの場所")
Dim target As String, change As String
'置換したい文字列
target = "○○○○年○○月○○日"
'wdDoc.Paragraphs(段落番号)で段落を指定 例として2番目 '例として今日の日付
wdDoc.Paragraphs(2).Range.Text = Replace(wdDoc.Paragraphs(2).Range.Text, target, Format(Date, "Long Date"))
'置換したい文字列
target = "[○○○○株式会社]"
'例として実際の株式会社 セルの値 可
change = "実際の株式会社"
'wdDoc.Paragraphs(段落番号)で段落を指定 例として5番目
wdDoc.Paragraphs(5).Range.Text = Replace(wdDoc.Paragraphs(5).Range.Text, target, change)
'左揃え指定(5番目以外が右揃えのせいか、なぜか右揃えになるので、左揃えに指定)
wdDoc.Paragraphs(5).Alignment = 0
' Word文書を保存して閉じる
wdDoc.SaveAs ThisWorkbook.Path & "\保存したいファイル名"
wdDoc.Close
' Wordアプリケーションを終了
wdApp.Quit
' 参照を解放
Set wdDoc = Nothing
Set wdApp = Nothing
End Sub
target = "[宛先]"
target = "[名前]"
target = "[日付]"
target = "[注文番号]"
target = "[住所]"
ほか何でもいいです
ひな形に置換対象として成立する文字列を記入してください
それを元にReplace関数で置換するだけです