当サイトの記事にはプロモーションが含まれています。

Word VBAでのコンテンツ検索【初心者向け解決ガイド】

パソコンパソコン・スマホ教室
スポンサーリンク

Wordの文書内で特定のテキストを検索する作業は、手動でも可能ですが、VBA(Visual Basic for Applications)を使用すると、より効率的に自動化できます。特に、複数の文書や大量のデータを扱う際に、その効果を実感できるでしょう。今回は、Word VBAの「Find」オブジェクトと「Execute」メソッドを中心に、初心者の方にも分かりやすく解説します。

スポンサーリンク

Word VBAのFindオブジェクトとは?

Wordのイメージ

Wordのイメージ

Word VBAにおける「Find」オブジェクトは、文書内で特定のテキストや書式を検索するための機能を提供します。これは、Wordの「検索と置換」ダイアログボックスで設定できるオプションと対応しており、プログラムから同様の操作を実行することができます。

例えば、以下のコードは、カーソル位置から文書内で「こんにちは」という文字列を検索し、見つかった場合にその部分を太字にするものです。

vba
With Selection.Find
.Text = "こんにちは"
.Forward = True
.Wrap = wdFindStop
.Execute
If .Found Then
Selection.Font.Bold = True
End If
End With

このコードでは、`Selection.Find`を使用して検索条件を設定し、`Execute`メソッドで実際の検索を実行しています。

Findオブジェクトの主なプロパティ

* `.Text`: 検索するテキストを指定します。
* `.Forward`: Trueに設定すると、カーソルの位置から前方に検索を行います。
* `.Wrap`: 検索が文書の終わりに達した際の動作を指定します。`wdFindStop`は検索を停止します。
* `.MatchCase`: 大文字と小文字を区別するかどうかを指定します。
* `.MatchWholeWord`: 完全一致のみを検索するかどうかを指定します。

Executeメソッドの使い方

`Execute`メソッドは、設定した検索条件に基づいて実際の検索を実行します。検索が成功すると、`True`を返し、失敗すると`False`を返します。これを利用して、検索結果に応じた処理を行うことができます。

以下のコードは、文書全体から「Word」という単語を検索し、見つかった場合にその部分を赤色に変更するものです。

vba
With ActiveDocument.Content.Find
.Text = "Word"
.Forward = True
.Wrap = wdFindStop
.Execute
If .Found Then
ActiveDocument.Range.Font.Color = wdColorRed
End If
End With

このように、`Execute`メソッドを使用することで、検索とその後の処理を簡潔に記述できます。

検索結果の反復処理

複数の検索結果を処理する場合、`Execute`メソッドをループ内で使用することが一般的です。以下のコードは、文書内のすべての「テスト」という単語を検索し、見つかった部分を太字にするものです。

vba
With ActiveDocument.Content.Find
.Text = "テスト"
.Forward = True
.Wrap = wdFindStop
Do While .Execute
If .Found Then
ActiveDocument.Range.Font.Bold = True
End If
Loop
End With

このコードでは、`Do While`ループを使用して、検索結果が見つからなくなるまで処理を繰り返します。

書式の検索と置換

VBAでは、テキストだけでなく、書式(フォント、段落設定など)の検索や置換も可能です。例えば、太字のテキストを検索して、斜体に変更する場合、以下のように記述します。

vba
With ActiveDocument.Content.Find
.ClearFormatting
.Font.Bold = True
.Replacement.ClearFormatting
.Replacement.Font.Italic = True
.Execute Replace:=wdReplaceAll
End With

このコードでは、`.Font.Bold = True`で太字のテキストを検索し、`.Replacement.Font.Italic = True`でその部分を斜体に置換しています。

よくある質問や疑問

Q1: FindオブジェクトとSelection.Findの違いは何ですか?

`Selection.Find`は、現在の選択範囲内での検索を行います。一方、`ActiveDocument.Content.Find`は、文書全体を対象に検索を行います。用途に応じて使い分けることが重要です。

Q2: Executeメソッドの戻り値がFalseの場合、どうすればよいですか?

`Execute`メソッドが`False`を返す場合、指定したテキストが見つからなかったことを意味します。この場合、検索条件を見直すか、検索範囲を変更することで対応できます。

Q3: 書式の検索と置換はどのように行いますか?

書式の検索と置換は、`.Font`や`.ParagraphFormat`などのプロパティを使用して行います。例えば、太字のテキストを検索して斜体に変更する場合、`.Font.Bold = True`で検索し、`.Replacement.Font.Italic = True`で置換します。

まとめ

Word VBAの「Find」オブジェクトと「Execute」メソッドを活用することで、文書内のテキストや書式の検索・置換を効率的に行うことができます。初心者の方でも、基本的な構文と使い方を理解することで、日常的な作業の自動化が可能となります。ぜひ、実際の文書で試してみてください。

他にも疑問やお悩み事があればお気軽にLINEからお声掛けください。

この記事を書いた人
この記事を書いた人

企業の情報システム部門で10年以上、PC・アカウント・社内ネットワーク・Microsoft 365/Google Workspace運用を担当。年間数百件の問い合わせ対応(PC不調、メール送受信、Excel/Word資料、Teams会議、スマホ連携など)を通じて、初心者がつまずくポイントを「再現→原因切り分け→最短解決」の手順に落とし込んできました

現場や身近で実際に起きたトラブルをベースに、手順だけでなく「なぜそうなるか」「失敗しやすい落とし穴」「安全な設定(セキュリティ)」まで含めて解説します。

相談窓口(問い合わせ/LINE等)を設け、記事で解決しないケースも個別にサポートしていますので「パソコンが急に動かなくなった」「スマホの設定がわからない」などの悩みは一人で抱え込まず、お気軽にご相談ください。

【お問い合わせは下記URLから】
https://m32006400n.xsrv.jp/inquiry-form/

【公式LINEは下記URLから】
https://lin.ee/t8TDjcj

uri uriをフォローする
スポンサーリンク
よかったらシェアしてね! /
uri uriをフォローする

コメント

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