Categories: excel

ExcelVBAでWordファイルを編集する方法

Excelでの作業を効率化する手段の一つとして、VBAを使った他アプリケーションの操作があります。中でもWordファイルを自動で開き、編集し、保存する操作は、報告書や帳票の自動生成などに大変役立ちます。
この記事では、Excel VBAからWordファイルを操作する基本的な方法を、初めての方でも実践できるよう丁寧に解説します。Wordを開く準備から、文章の挿入、文字の書式設定、保存や終了までを一通りマスターできる内容です。


Word操作に必要な参照設定を行う

Excel VBAからWordを操作するためには、事前に「参照設定」が必要です。これにより、Wordのオブジェクト(文書、段落など)をVBAから扱えるようになります。

手順

  1. ExcelのVBAエディタ(Alt + F11)を開く
  2. メニューバーの「ツール」>「参照設定」を選択
  3. 「Microsoft Word xx.0 Object Library」にチェックを入れてOKをクリック(xxはバージョン番号)

この設定を行うことで、Word.Applicationなどのオブジェクトを使用可能になります。


Wordアプリケーションを起動し、既存ファイルを開く

まずはWordアプリケーションを起動し、既存のWordファイルを開くVBAコードを見てみましょう。

Sub OpenWordFile()
Dim wdApp As Word.Application
Dim wdDoc As Word.Document
Dim filePath As String

filePath = "C:\Users\YourName\Documents\sample.docx"

Set wdApp = New Word.Application
wdApp.Visible = True

Set wdDoc = wdApp.Documents.Open(filePath)
End Sub

解説

  • Word.Application:Wordのアプリ本体を操作するためのオブジェクト
  • .Visible = True:起動したWordを画面に表示
  • .Documents.Open(filePath):指定のファイルを開く

Word文書にテキストを追加する方法

開いたWordファイルに、Excelから文字を挿入するには以下のコードを使います。

Sub InsertTextToWord()
Dim wdApp As Word.Application
Dim wdDoc As Word.Document

Set wdApp = New Word.Application
Set wdDoc = wdApp.Documents.Open("C:\Users\YourName\Documents\sample.docx")
wdApp.Visible = True

wdDoc.Content.InsertAfter "これはExcel VBAから追加したテキストです。" & vbCrLf
End Sub

ポイント

  • .Content.InsertAfter:文書の末尾にテキストを挿入
  • vbCrLf:改行を表すVBA定数

指定位置にテキストを挿入する

文書の特定の位置に挿入したい場合は、Rangeオブジェクトを使います。

Sub InsertTextAtTop()
Dim wdApp As Word.Application
Dim wdDoc As Word.Document
Dim rng As Word.Range

Set wdApp = New Word.Application
Set wdDoc = wdApp.Documents.Open("C:\Users\YourName\Documents\sample.docx")
wdApp.Visible = True

Set rng = wdDoc.Range(Start:=0, End:=0)
rng.Text = "【ヘッダー】" & vbCrLf
End Sub

書式設定を加えてテキストを挿入する

文字サイズや色など、書式を整えることもできます。

Sub InsertFormattedText()
Dim wdApp As Word.Application
Dim wdDoc As Word.Document
Dim rng As Word.Range

Set wdApp = New Word.Application
Set wdDoc = wdApp.Documents.Open("C:\Users\YourName\Documents\sample.docx")
wdApp.Visible = True

Set rng = wdDoc.Content
rng.Collapse Direction:=wdCollapseEnd
rng.Text = "見出しテキスト" & vbCrLf
rng.Font.Size = 14
rng.Font.Bold = True
rng.Font.Color = wdColorBlue
End Sub

Word文書を保存して終了する方法

最後に、作業が終わったら文書を保存し、アプリケーションを終了させましょう。

Sub SaveAndCloseWord()
Dim wdApp As Word.Application
Dim wdDoc As Word.Document

Set wdApp = New Word.Application
Set wdDoc = wdApp.Documents.Open("C:\Users\YourName\Documents\sample.docx")

wdDoc.Save
wdDoc.Close
wdApp.Quit

Set wdDoc = Nothing
Set wdApp = Nothing
End Sub

ポイント

  • .Save:現在の文書を上書き保存
  • .Close:ファイルを閉じる
  • .Quit:Wordアプリケーションを終了
  • Set ~ = Nothing:メモリ解放のための明示的なオブジェクト解放

ExcelシートのデータをWordに書き出す

実用的な例として、ExcelのA列のデータをWordに順番に書き出すサンプルを紹介します。

Sub ExportExcelDataToWord()
Dim wdApp As Word.Application
Dim wdDoc As Word.Document
Dim i As Integer
Dim lastRow As Long

Set wdApp = New Word.Application
Set wdDoc = wdApp.Documents.Add
wdApp.Visible = True

lastRow = Cells(Rows.Count, 1).End(xlUp).Row

For i = 1 To lastRow
wdDoc.Content.InsertAfter Cells(i, 1).Value & vbCrLf
Next i
End Sub

トラブルシューティング:よくあるエラーと対処法

「オブジェクト変数または With ブロック変数が設定されていません」

Set wdApp = New Word.Application など、必ずオブジェクトの初期化が必要です。

「Word.Application が認識されない」

→ 参照設定がされていない可能性があります。冒頭で紹介した参照設定を確認してください。


まとめ

Excel VBAを使ってWordを操作することで、定型的な書類作成や自動レポート出力の効率が格段に上がります。今回紹介した方法をベースに、さらなる応用(表の挿入、画像の挿入、テンプレートの活用など)にも挑戦してみてください。

特に業務の中でExcelとWordを頻繁に使う方には、VBAを使った自動化が大きな武器になります。ぜひ実務に活かして、作業時間の短縮とミスの軽減を目指しましょう。

upandup

Web制作の記事を中心に、暮らし、ビジネスに役立つ情報を発信します。 アフィリエイトにも参加しています。よろしくお願いいたします。