0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

VBAでWordの差し込み印刷を行う方法

Last updated at Posted at 2025-03-04

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関数で置換するだけです
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?