Word文書を大量に扱っていると、**「特定の語句を一括で置き換えたい」「毎回同じ置換作業を手動でやるのは面倒」**と感じたことはありませんか?
そんなときに役立つのが、VBA(Visual Basic for Applications)を使った置換の自動化です。この記事では、中学生でも簡単に試せる「Word VBAによる置換の基本的な使い方」や、具体的なコード例をわかりやすく解説します。
VBAとは:Wordを自動化する強力なツール

VBAの基本概念
VBA(Visual Basic for Applications)とは、Microsoft Office製品に組み込まれた簡易的なプログラミング言語です。難しそうに聞こえるかもしれませんが、実は中学生でも理解できるシンプルな仕組みです。
VBAを使うメリット
作業時間の大幅短縮:手動で何十分もかかる作業が数秒で完了
人的ミスの防止:同じ作業を正確に繰り返し実行
一貫性の確保:すべての文書で同じルールを適用
複雑な置換も可能:条件付きの置換や、複数の置換を連続実行
VBAが活躍する場面
年度更新作業:「令和5年」を「令和6年」に一括変更
表記統一作業:「株式会社」と「(株)」の表記を統一
誤字修正作業:よくある間違いを自動で修正
テンプレート更新:会社名やロゴの変更を複数文書に適用
Word VBAで文字列を置換する基本手順
ステップ1:開発タブの表示
まず、Wordで「開発」タブを表示する必要があります。通常は非表示になっているので、以下の手順で表示させます。
手順
- 「ファイル」をクリック
 - 「オプション」を選択
 - 「リボンのユーザー設定」をクリック
 - 右側の一覧で「開発」にチェックを入れる
 - 「OK」をクリック
 
これで、リボンメニューに「開発」タブが表示されます。
ステップ2:VBAエディターの起動
手順
- 「開発」タブをクリック
 - 「Visual Basic」ボタンをクリック
 
新しいウィンドウが開き、これがVBAエディター(開発環境)です。ここでプログラムを書いたり実行したりします。
ステップ3:新しいモジュールの作成
手順
- VBAエディターで「挿入」メニューをクリック
 - 「標準モジュール」を選択
 
「Module1」という新しいモジュール(プログラムを書く場所)が作成されます。
ステップ4:基本的な置換コードの入力
以下のコードをVBAエディターに入力します。
Sub 基本的な文字列置換()
    With ActiveDocument.Content.Find
        .Text = "置換前の文字"
        .Replacement.Text = "置換後の文字"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
        .Execute Replace:=wdReplaceAll
    End With
End Sub
ステップ5:コードの実行
手順
- コードの中にカーソルを置く
 - 「F5」キーを押す、またはツールバーの「▶」実行ボタンをクリック
 
これで、指定された文字列がすべて自動で置き換えられます。
コードの詳細説明
各行の意味
Sub 基本的な文字列置換()
プロシージャ(一連の処理をまとめたもの)の開始を宣言します。名前は自由に変更できます。
With ActiveDocument.Content.Find
現在開いているWord文書の内容に対して検索・置換を行うことを指定します。
.Text = "置換前の文字"
検索したい文字列を指定します。この部分を実際の文字に変更してください。
.Replacement.Text = "置換後の文字"
置換したい文字列を指定します。この部分も実際の文字に変更してください。
.Forward = True
文書の最初から最後に向かって検索することを指定します。
.Wrap = wdFindContinue
文書の最後まで検索したら、最初に戻って続行することを指定します。
.MatchCase = False
大文字と小文字を区別しないことを指定します。
.MatchWholeWord = False
単語の一部でも置換対象にすることを指定します。
.Execute Replace:=wdReplaceAll
実際の置換を実行します。「wdReplaceAll」はすべての該当箇所を置換することを意味します。
実践的なコード例
例1:年度の更新
Sub 年度更新()
    With ActiveDocument.Content.Find
        .Text = "令和5年"
        .Replacement.Text = "令和6年"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
        .Execute Replace:=wdReplaceAll
    End With
    
    MsgBox "年度の更新が完了しました。"
End Sub
例2:会社名の表記統一
Sub 会社名統一()
    With ActiveDocument.Content.Find
        .Text = "株式会社ABC"
        .Replacement.Text = "ABC株式会社"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = True
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
        .Execute Replace:=wdReplaceAll
    End With
    
    MsgBox "会社名の統一が完了しました。"
End Sub
例3:複数の置換を連続実行
Sub 複数置換()
    Dim i As Integer
    Dim 置換前(2) As String
    Dim 置換後(2) As String
    
    ' 置換する文字列のペアを定義
    置換前(0) = "テストー"
    置換後(0) = "テスト"
    置換前(1) = "サーバー"
    置換後(1) = "サーバ"
    置換前(2) = "コンピューター"
    置換後(2) = "コンピュータ"
    
    ' 各ペアについて置換を実行
    For i = 0 To 2
        With ActiveDocument.Content.Find
            .Text = 置換前(i)
            .Replacement.Text = 置換後(i)
            .Forward = True
            .Wrap = wdFindContinue
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
            .Execute Replace:=wdReplaceAll
        End With
    Next i
    
    MsgBox "複数の置換が完了しました。"
End Sub
高度な置換オプション
大文字・小文字を区別する置換
Sub 大文字小文字区別()
    With ActiveDocument.Content.Find
        .Text = "Word"
        .Replacement.Text = "Microsoft Word"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = True  ' 大文字小文字を区別
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
        .Execute Replace:=wdReplaceAll
    End With
End Sub
完全一致のみを置換
Sub 完全一致置換()
    With ActiveDocument.Content.Find
        .Text = "PC"
        .Replacement.Text = "パーソナルコンピュータ"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = True  ' 完全一致のみ
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
        .Execute Replace:=wdReplaceAll
    End With
End Sub
ワイルドカードを使った置換
Sub ワイルドカード置換()
    With ActiveDocument.Content.Find
        .Text = "[0-9]{4}年"  ' 4桁の数字+「年」
        .Replacement.Text = "西暦&年"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = True  ' ワイルドカード有効
        .MatchSoundsLike = False
        .MatchAllWordForms = False
        .Execute Replace:=wdReplaceAll
    End With
End Sub
実際の活用例

ケース1:契約書の年度更新
状況:100ページの契約書で「2024年」を「2025年」に変更
従来の方法:
- 検索・置換ダイアログを開く
 - 検索文字列と置換文字列を入力
 - 「すべて置換」をクリック
 - 確認作業
 
VBAを使用:
Sub 契約書年度更新()
    With ActiveDocument.Content.Find
        .Text = "2024年"
        .Replacement.Text = "2025年"
        .Execute Replace:=wdReplaceAll
    End With
    MsgBox "年度更新完了:" & .Found & "箇所を変更しました。"
End Sub
結果:数秒で完了、置換箇所数も表示
ケース2:マニュアルの表記統一
状況:技術マニュアルで略語の表記を統一
VBAコード:
Sub マニュアル表記統一()
    Dim 表記パターン(4, 1) As String
    
    ' 統一したい表記パターンを定義
    表記パターン(0, 0) = "ログイン"
    表記パターン(0, 1) = "ログイン"
    表記パターン(1, 0) = "ログ・イン"
    表記パターン(1, 1) = "ログイン"
    表記パターン(2, 0) = "データベース"
    表記パターン(2, 1) = "データベース"
    表記パターン(3, 0) = "データ・ベース"
    表記パターン(3, 1) = "データベース"
    表記パターン(4, 0) = "Webサイト"
    表記パターン(4, 1) = "Webサイト"
    
    Dim i As Integer
    For i = 0 To 4
        With ActiveDocument.Content.Find
            .Text = 表記パターン(i, 0)
            .Replacement.Text = 表記パターン(i, 1)
            .Execute Replace:=wdReplaceAll
        End With
    Next i
    
    MsgBox "表記統一が完了しました。"
End Sub
ケース3:個人情報の仮名化
状況:文書から実際の氏名を仮名に置換
VBAコード:
Sub 個人情報仮名化()
    Dim 実名(2) As String
    Dim 仮名(2) As String
    
    実名(0) = "田中太郎"
    仮名(0) = "Aさん"
    実名(1) = "佐藤花子"
    仮名(1) = "Bさん"
    実名(2) = "鈴木次郎"
    仮名(2) = "Cさん"
    
    Dim i As Integer
    For i = 0 To 2
        With ActiveDocument.Content.Find
            .Text = 実名(i)
            .Replacement.Text = 仮名(i)
            .MatchWholeWord = True
            .Execute Replace:=wdReplaceAll
        End With
    Next i
    
    MsgBox "個人情報の仮名化が完了しました。"
End Sub
エラー処理と安全対策
バックアップ作成付きの置換
Sub 安全な置換()
    ' バックアップファイル作成
    Dim バックアップ名 As String
    バックアップ名 = ActiveDocument.Path & "\" & "backup_" & Format(Now, "yyyymmdd_hhmmss") & "_" & ActiveDocument.Name
    ActiveDocument.SaveAs2 バックアップ名
    
    ' 元のファイルを開き直し
    Documents.Open ActiveDocument.FullName
    
    ' 置換実行
    With ActiveDocument.Content.Find
        .Text = "置換前"
        .Replacement.Text = "置換後"
        .Execute Replace:=wdReplaceAll
    End With
    
    MsgBox "置換完了。バックアップ:" & バックアップ名
End Sub
エラーハンドリング付きの置換
Sub エラー処理付き置換()
    On Error GoTo エラー処理
    
    With ActiveDocument.Content.Find
        .Text = "検索文字"
        .Replacement.Text = "置換文字"
        .Execute Replace:=wdReplaceAll
    End With
    
    MsgBox "置換が正常に完了しました。"
    Exit Sub
    
エラー処理:
    MsgBox "エラーが発生しました:" & Err.Description
End Sub
よくある問題と解決方法
Q:VBAコードが実行されない
原因:マクロのセキュリティ設定が有効になっている
解決方法:
- 「ファイル」→「オプション」→「セキュリティセンター」
 - 「セキュリティセンターの設定」をクリック
 - 「マクロの設定」で「すべてのマクロを有効にする」を選択
 - Wordを再起動
 
Q:置換結果が期待と違う
原因:検索条件の設定が適切でない
解決方法:
MatchWholeWord = True:完全一致のみMatchCase = True:大文字小文字を区別- 置換前にテスト実行で確認
 
Q:大量の文書を一度に処理したい
解決方法:複数ファイル処理用のコード
Sub 複数ファイル置換()
    Dim ファイルパス As String
    Dim ドキュメント As Document
    
    ファイルパス = Dir("C:\Documents\*.docx")
    
    Do While ファイルパス <> ""
        Set ドキュメント = Documents.Open("C:\Documents\" & ファイルパス)
        
        With ドキュメント.Content.Find
            .Text = "置換前"
            .Replacement.Text = "置換後"
            .Execute Replace:=wdReplaceAll
        End With
        
        ドキュメント.Save
        ドキュメント.Close
        
        ファイルパス = Dir()
    Loop
    
    MsgBox "全ファイルの置換が完了しました。"
End Sub
効率化のためのコツ
コードの再利用
テンプレート化
よく使う置換パターンをテンプレートとして保存し、必要に応じて文字列部分だけを変更
ユーザー入力対応
Sub ユーザー入力置換()
    Dim 検索文字 As String
    Dim 置換文字 As String
    
    検索文字 = InputBox("検索する文字列を入力してください")
    置換文字 = InputBox("置換する文字列を入力してください")
    
    If 検索文字 <> "" And 置換文字 <> "" Then
        With ActiveDocument.Content.Find
            .Text = 検索文字
            .Replacement.Text = 置換文字
            .Execute Replace:=wdReplaceAll
        End With
        MsgBox "置換が完了しました。"
    End If
End Sub
ショートカットキーの設定
カスタムボタンの作成
- 「ファイル」→「オプション」→「リボンのユーザー設定」
 - 「新しいグループ」を作成
 - VBAマクロを追加してボタン化
 
注意点とベストプラクティス
重要な注意事項
必ずバックアップを作成:置換は元に戻すことが困難な場合があります
小範囲でテスト:大量のデータで実行する前に、小さなサンプルで動作確認
権限の確認:他の人が作成した文書では編集権限を確認
文字エンコーディング:特殊文字や記号が含まれる場合は注意が必要
セキュリティ考慮事項
マクロウイルス対策:信頼できるソースからのコードのみ実行
機密情報の取り扱い:個人情報や機密データを含む文書では特に慎重に
実行ログの記録:重要な文書では変更履歴を記録
まとめ
Word VBAによる置換は、繰り返しの作業を劇的に効率化できる強力な手段です。
重要なポイント
基本操作の習得:
- 開発タブの表示
 - VBAエディターの使い方
 - 基本的なコードの書き方と実行方法
 
実践的な活用:
- 年度更新、表記統一、誤字修正などの定型作業
 - 複数の置換を連続実行
 - ワイルドカードや条件付き置換の活用
 
安全な実行:
- 必ずバックアップを作成
 - 小規模テストから始める
 - エラー処理の実装
 
効率化のコツ:
- コードのテンプレート化
 - ユーザー入力インターフェースの追加
 - ショートカットキーやボタンの設定
 
  
  
  
  
              
              
              
              
              

コメント