「Wordで同じ操作を何度も繰り返している…」「差し込み印刷やフォーマット整形を自動化したい」
そんなときに力を発揮するのが、**WordのVBA(Visual Basic for Applications)**です。
マクロ機能の一部として使えるVBAは、繰り返し作業の自動化、文書の一括操作、複雑な処理の簡略化に役立ちます。今回は、VBAの基本的な使い方から、実際に使えるコード例までをわかりやすく解説していきます。
VBAとは?Wordでできることをもっと広げよう

VBAの基本概念
VBA(Visual Basic for Applications)とは、Microsoft Office製品に組み込まれているプログラミング言語です。Word、Excel、PowerPoint、Outlookなどの操作を自動化することができます。
WordでVBAを使うとこんなことができる
WordでVBAを活用すると、以下のような作業を自動化できます:
- 決まったフォーマットで文書を自動作成
- 文中の特定文字列を一括置換
- 表の自動挿入や修正
- ファイルの一括保存や印刷
- ページ設定やレイアウトの統一
- 複数の文書を連続処理
これらの機能により、手作業では時間のかかる作業を数秒で完了させることが可能になります。
VBAとマクロの違いは?
多くの人が混同しがちなVBAとマクロですが、実は以下のような関係があります:
- マクロ:Wordの操作を記録・再生する機能
- VBA:マクロを作るためのプログラミング言語
つまり、VBAを使ってマクロを作成するということになります。
VBAを使える環境を準備しよう
開発タブを表示する方法
VBAを使うためには、まず「開発」タブをリボンに表示させる必要があります。
手順
- 「ファイル」メニューをクリック
- 「オプション」を選択
- 左側のメニューから「リボンのユーザー設定」をクリック
- 右側の一覧で「開発」にチェックを入れる
- 「OK」ボタンをクリック
これで、リボンに「開発」タブが表示されるようになります。
セキュリティ設定の確認
VBAを実行するためには、セキュリティ設定も確認しておきましょう。
設定手順
- 「ファイル」→「オプション」
- 「セキュリティセンター」を選択
- 「セキュリティセンターの設定」をクリック
- 「マクロの設定」で「警告を表示してすべてのマクロを無効にする」を選択
この設定により、安全性を保ちながらVBAを使用できます。
マクロの作成とVBAコードの記述方法
マクロを新規作成する
基本的な作成手順
- 「開発」タブの「マクロ」をクリック
- 「マクロ名」に任意の名前を入力(例:「文字置換マクロ」)
- 「作成」ボタンをクリック
- VBAエディターが自動的に開く
VBAエディターの画面構成
VBAエディターが開くと、以下のような画面が表示されます:
- プロジェクトエクスプローラー:プロジェクトやモジュールの一覧
- コードウィンドウ:実際にVBAコードを記述する場所
- プロパティウィンドウ:選択したオブジェクトのプロパティ一覧
基本的なコードの構造
VBAのコードは、以下のような構造になっています:
Sub マクロ名()
' ここにVBAコードを記述
End Sub
「Sub」から「End Sub」までが、ひとつのマクロ(プロシージャ)となります。
実例:すぐに使えるVBAコードの紹介
文字列の一括置換
コード例:「株式会社」を「(株)」に置換
Sub ReplaceCompanyName()
' 文書全体で「株式会社」を「(株)」に置換
With Selection.Find
.Text = "株式会社"
.Replacement.Text = "(株)"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.Execute Replace:=wdReplaceAll
End With
' 処理完了メッセージを表示
MsgBox "置換が完了しました。"
End Sub
コードの解説
Selection.Find
:検索・置換機能を使用.Text
:検索する文字列を指定.Replacement.Text
:置換後の文字列を指定.Execute Replace:=wdReplaceAll
:すべて置換を実行
フッターの自動挿入
コード例:全ページにページ番号付きフッターを挿入
Sub AddPageFooter()
Dim sec As Section
Dim footer As HeaderFooter
' 各セクションのフッターにページ番号を挿入
For Each sec In ActiveDocument.Sections
Set footer = sec.Footers(wdHeaderFooterPrimary)
With footer.Range
.Text = "ページ "
.Collapse Direction:=wdCollapseEnd
.Fields.Add Range:=footer.Range, Type:=wdFieldPage
.InsertAfter " / "
.Collapse Direction:=wdCollapseEnd
.Fields.Add Range:=footer.Range, Type:=wdFieldNumPages
End With
' フッターを中央揃えに設定
footer.Range.ParagraphFormat.Alignment = wdAlignParagraphCenter
Next sec
MsgBox "フッターの挿入が完了しました。"
End Sub
表の自動作成
コード例:3行4列の表を自動作成
Sub CreateTable()
Dim myTable As Table
Dim myRange As Range
' カーソル位置に表を挿入
Set myRange = Selection.Range
Set myTable = ActiveDocument.Tables.Add(myRange, 3, 4)
' 表のスタイルを設定
With myTable
.Style = "表グリッド1"
.ApplyStyleHeadingRows = True
.ApplyStyleLastRow = False
.ApplyStyleFirstColumn = True
.ApplyStyleLastColumn = False
End With
' ヘッダー行に項目名を入力
myTable.Cell(1, 1).Range.Text = "項目1"
myTable.Cell(1, 2).Range.Text = "項目2"
myTable.Cell(1, 3).Range.Text = "項目3"
myTable.Cell(1, 4).Range.Text = "項目4"
MsgBox "表の作成が完了しました。"
End Sub
文書の自動保存
コード例:現在の日付でファイルを保存
Sub SaveWithDate()
Dim fileName As String
Dim currentDate As String
' 現在の日付を「YYYY-MM-DD」形式で取得
currentDate = Format(Date, "yyyy-mm-dd")
' ファイル名を作成(例:「文書_2025-07-21」)
fileName = "文書_" & currentDate
' デスクトップに保存
ActiveDocument.SaveAs2 fileName:=Environ("USERPROFILE") & "\Desktop\" & fileName & ".docx"
MsgBox "ファイルを保存しました:" & fileName & ".docx"
End Sub
VBAを使うときの注意点とコツ

ファイルの保存形式に注意
VBAを含む文書は、通常の.docx
形式では保存できません。以下の形式で保存する必要があります:
.docm
:マクロ有効Word文書.dotm
:マクロ有効Wordテンプレート
セキュリティへの配慮
他人と文書を共有するとき
- マクロを含む文書は、受け取った人のセキュリティ設定によっては実行できない場合があります
- 信頼できる送信者であることを相手に伝えましょう
- 可能であれば、マクロなしの文書も併せて提供することをおすすめします
ウイルス対策
- 不明な送信者からのマクロ付き文書は開かないようにしましょう
- 自分で作成したマクロでも、定期的にコードの見直しをおこないましょう
デバッグのコツ
エラーが発生したとき
VBAコードでエラーが発生した場合は、以下の方法で解決できることが多いです:
- ステップ実行:F8キーを押してコードを1行ずつ実行
- 変数の確認:マウスカーソルを変数に合わせて値を確認
- MsgBoxでの確認:処理の途中で値を表示して動作を確認
よくあるエラーと対処法
- 「オブジェクトが設定されていません」:オブジェクトの参照を正しく設定する
- 「添字が有効範囲にありません」:配列やコレクションの範囲を確認する
- 「実行時エラー」:対象となる文書や範囲が存在するか確認する
VBAでできることをもっと知ろう
応用的な活用例
文書の一括処理
複数のWordファイルを一度に処理することも可能です:
Sub ProcessMultipleFiles()
Dim folderPath As String
Dim fileName As String
Dim doc As Document
' フォルダパスを指定
folderPath = "C:\Documents\処理対象\"
fileName = Dir(folderPath & "*.docx")
' フォルダ内のすべてのWordファイルを処理
Do While fileName <> ""
Set doc = Documents.Open(folderPath & fileName)
' ここに各ファイルに対する処理を記述
' 例:フォントサイズを12ptに統一
doc.Range.Font.Size = 12
doc.Save
doc.Close
fileName = Dir()
Loop
MsgBox "一括処理が完了しました。"
End Sub
外部データとの連携
Excelファイルからデータを読み込んで、Word文書に反映させることも可能です。これにより、データドリブンな文書作成が実現できます。
学習を進めるためのヒント
オンラインリソースの活用
- Microsoft公式ドキュメント
- VBA関連のフォーラムやコミュニティ
- YouTubeの解説動画
実践的な学習方法
- 小さなマクロから始める:簡単な処理から徐々に複雑な処理に挑戦
- 既存のコードを改変する:サンプルコードを自分の用途に合わせて修正
- エラーを恐れない:エラーメッセージから学ぶことも多い
まとめ
WordのVBAを使えば、手間のかかる作業を一気に自動化できます。最初は難しく感じるかもしれませんが、定型業務の効率化には大きな力になります。
覚えておきたいポイント
- 「開発」タブを有効にしてマクロ作成を始めよう
- 基本の記述で文書の自動編集や一括処理が可能
- セキュリティと保存形式には注意を
- 小さなマクロから始めて徐々にスキルアップ
コメント