Excelでの作業を効率化する手段の一つとして、VBAを使った他アプリケーションの操作があります。中でもWordファイルを自動で開き、編集し、保存する操作は、報告書や帳票の自動生成などに大変役立ちます。
この記事では、Excel VBAからWordファイルを操作する基本的な方法を、初めての方でも実践できるよう丁寧に解説します。Wordを開く準備から、文章の挿入、文字の書式設定、保存や終了までを一通りマスターできる内容です。
Excel VBAからWordを操作するためには、事前に「参照設定」が必要です。これにより、Wordのオブジェクト(文書、段落など)をVBAから扱えるようになります。
この設定を行うことで、Word.Application
などのオブジェクトを使用可能になります。
まずは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ファイルに、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
最後に、作業が終わったら文書を保存し、アプリケーションを終了させましょう。
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の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
→ Set wdApp = New Word.Application
など、必ずオブジェクトの初期化が必要です。
→ 参照設定がされていない可能性があります。冒頭で紹介した参照設定を確認してください。
Excel VBAを使ってWordを操作することで、定型的な書類作成や自動レポート出力の効率が格段に上がります。今回紹介した方法をベースに、さらなる応用(表の挿入、画像の挿入、テンプレートの活用など)にも挑戦してみてください。
特に業務の中でExcelとWordを頻繁に使う方には、VBAを使った自動化が大きな武器になります。ぜひ実務に活かして、作業時間の短縮とミスの軽減を目指しましょう。