Excelでの作業を効率化する手段の一つとして、VBAを使った他アプリケーションの操作があります。中でもWordファイルを自動で開き、編集し、保存する操作は、報告書や帳票の自動生成などに大変役立ちます。
この記事では、Excel VBAからWordファイルを操作する基本的な方法を、初めての方でも実践できるよう丁寧に解説します。Wordを開く準備から、文章の挿入、文字の書式設定、保存や終了までを一通りマスターできる内容です。
Word操作に必要な参照設定を行う
Excel VBAからWordを操作するためには、事前に「参照設定」が必要です。これにより、Wordのオブジェクト(文書、段落など)をVBAから扱えるようになります。
手順
- ExcelのVBAエディタ(Alt + F11)を開く
- メニューバーの「ツール」>「参照設定」を選択
- 「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を使った自動化が大きな武器になります。ぜひ実務に活かして、作業時間の短縮とミスの軽減を目指しましょう。

