【VBAリファレンス|実務向け】VBAでWordを操る!特定の文字列を検索・置換する自動化テクニック

スポンサーリンク

1. 導入:なぜVBAで検索・置換を自動化するのか

実務において、Word文書内の決まった文言を修正したり、定型文書の氏名や日付を一括で差し替えたりする作業は非常に多いものです。手動で「検索と置換」ダイアログを開いて操作しても良いのですが、対象となる文書が何十、何百とある場合、手作業ではミスが発生しやすく、膨大な時間を浪費してしまいます。VBAを使えば、これらの操作を瞬時に、かつ正確に自動化できます。今回は、Excel VBAからWordを操作し、文字列を検索・置換する方法を解説します。

2. 基礎知識:Wordオブジェクトの操作

VBAでWordを操作するには、Wordのアプリケーションを起動し、その中の文書(Document)オブジェクトにアクセスする必要があります。
ポイントは「Find」オブジェクトです。Wordの検索・置換機能は、Rangeオブジェクト(文書内の範囲)に対してFindオブジェクトを適用することで実現します。この仕組みを理解しておけば、単なる置換だけでなく、「特定のフォントを探す」「書式を変更する」といった高度な自動化も可能になります。

3. 実装の考え方

VBAでWordの検索・置換を行う手順は以下の通りです。
1. Wordアプリケーションを起動(または既存のWordを開く)。
2. 対象の文書を開く。
3. 文書のRange(全範囲)を取得する。
4. Findオブジェクトを使って、検索と置換を実行する。
5. 文書を保存して閉じる。

※注意点として、VBAからWordを操作するためには、VBEのメニューから「ツール」→「参照設定」で「Microsoft Word XX.0 Object Library」にチェックを入れる必要があります。

4. サンプルプログラム

以下のコードは、指定したWordファイルを開き、特定の文字列を置換して保存する実用的なサンプルです。

‘ 参照設定:Microsoft Word XX.0 Object Library が必要です
Sub ReplaceWordText()
Dim wdApp As Word.Application
Dim wdDoc As Word.Document
Dim filePath As String

‘ 操作するWordファイルのパスを指定
filePath = “C:\Test\Sample.docx”

‘ Wordアプリケーションを起動
Set wdApp = New Word.Application
wdApp.Visible = True ‘ 動作確認のため画面を表示

‘ ドキュメントを開く
Set wdDoc = wdApp.Documents.Open(filePath)

‘ Findオブジェクトを使って置換を実行
With wdDoc.Content.Find
.ClearFormatting ‘ 検索条件の書式をクリア
.Replacement.ClearFormatting ‘ 置換後の書式をクリア
.Text = “旧文字列” ‘ 検索する文字列
.Replacement.Text = “新文字列” ‘ 置換後の文字列
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False ‘ 大文字小文字を区別しない
.MatchWholeWord = False

‘ 全て置換を実行
.Execute Replace:=wdReplaceAll
End With

‘ 保存して閉じる
wdDoc.Close SaveChanges:=True
wdApp.Quit

‘ メモリ解放
Set wdDoc = Nothing
Set wdApp = Nothing

MsgBox “置換が完了しました。”
End Sub

5. 応用・注意点

・「すべて置換」の罠
コード内の「wdReplaceAll」は非常に強力ですが、誤った置換を行うと文書の整合性が崩れる可能性があります。重要な文書を扱う場合は、あらかじめバックアップを取るコードを先頭に追加するのが現場の鉄則です。
・処理後のクリーンアップ
VBAでWordを操作すると、エラーが発生した際に背後でWordのプロセスだけが残ってしまうことがよくあります。必ず「Set wdApp = Nothing」で終了処理を行い、万が一のためにエラーハンドリング(On Error Resume Nextなど)を組み込むことをお勧めします。
・ワイルドカードの活用
Findオブジェクトのプロパティ「.MatchWildcards = True」とすれば、Wordのワイルドカード検索も可能です。これにより、「数字のみを検索する」「特定のパターンを持つ文字列を抽出する」といった柔軟な対応が可能になります。

タイトルとURLをコピーしました