Word VBAで検索オプションを設定して検索をする方法とそのプロパティ一覧

★気に入ったらシェアをお願いします!

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

Word VBAで色々な検索や置換をする方法についてお伝えしています。

前回の記事はこちら。

Word VBAで文字列を置換する方法!いくつかの基本パターンを徹底解説
Word VBAでいろいろな検索や置換をする方法についてお伝えしています。Word VBAで置換をする方法は、いくつかのパターンがありますので、それぞれの組み方と特徴を徹底解説をしていきます。

Word VBAで置換をする方法についてお伝えしました。

今まで紹介してきました検索や置換は単純にマッチする文字列を探してくるだけだったのですが、ほら、Wordの検索機能には全角と半角を区別して検索したり、アルファベットの大文字と小文字を区別したり、細やかな設定ができますでしょ。

Word VBAでもそれらの細かな条件を設定した検索が可能です。

ということで、今回はWord VBAで検索オプションを設定して検索をする方法をお伝えしつつ、その設定項目をまとめてお伝えします。

では、行ってみましょう!

デフォルトの状態で置換をする

まず、お題として以下のようなWord文書を用意しました。

置換前のWord文書

「Word」という言葉ですが、少しずつパターンを変えて4つ用意しました。半角&全角、そして先頭文字がお大文字&小文字という組み合わせです。

この文書の先頭にカーソルを置いた状態で、以下のプロシージャを実行してみます。

「Word」という単語を「ワード」に置換する内容ですからね、実行をすると…

デフォルト時にWord VBAで置換

このように全部「ワード」に置換されました。

Word VBAでの置換は、デフォルトでは全角と半角の違いも、大文字と小文字の違いも区別されないんですね。

MatchCaseプロパティで大文字と小文字を区別を設定する

では、まず大文字と小文字の区別をするように設定しましょう。

FindオブジェクトのMatchCaseプロパティを使います。

Trueにすると検索時に大文字と小文字を区別するようになります。

Findオブジェクト.MatchCase = True

プロシージャにこの設定を追加しましょう。

置換前のWord文書に対してこのプロシージャを実行してみましょう。

Word VBAで大文字・小文字を区別して置換

すると、このように頭文字が小文字の「word」は半角、全角ともに置換されませんでした。検索オプションが効いていますね。

MatchByteプロパティで全角と半角の区別を設定する

では、続いて全角と半角を区別するように設定をしましょう。

MatchByteプロパティを使います。

Trueに設定をすると全角と半角を区別して検索をするようになります。

Findオブジェクト.MatchByte = True

では、先ほどのMatchCaseプロパティの設定を、MatchByteプロパティの設定に変更をしました。

これを置換前のWord文書に対して実行してみると…

Word VBAでは検索オプションは重ね掛け

おや?

全角の文字列が置換されなかったのは良いのですが、なぜか半角の「word」が置換されていませんね…

Word VBAの検索オプション設定は「重ね掛け」

この謎を解き明かしてみましょう。

Wordで Ctrl + F でナビゲーションメニューを開いて、検索メニューのオプションを選択してみてください。

Wordの検索オプションを開く

すると、「検索オプション」ウィンドウで現在の検索オプションの状態を確認できるのですが、以下のように

  • 大文字と小文字を区別する
  • 半角と全角を区別する

の両方にチェックが入っています。

Wordの検索オプションを確認

つまり、検索オプションの設定は「重ね掛け」になるんですね。プロシージャ実行時の設定が生きたままリセットされません。

Wordアプリケーションを立ち上げ直すと検索オプションがリセットされますが、Wordを立ち上げたまま、設定が異なる検索を複数回行うのであれば、以下のように関係するプロパティのTrue・Falseを都度設定をするのが安心です。

そうすれば、以下のように全角と半角の区別だけをみて検索ができるようになります。

Word VBAで全角・半角を区別して置換

検索時に設定できる検索のオプション一覧

Wordには、その他にも検索オプションの設定項目はたくさんあり、デフォルトの状態の検索オプションは以下のような状態になっています。

デフォルトのWordの検索オプション

この設定一つ一つにFindオブジェクトのプロパティが対応をしていますので、以下表にまとめました。

プロパティ 既定値 検索オプションの設定
MatchCase False 大文字と小文字を区別する
MatchWholeWord False 完全に一致する単語だけを検索する
MatchWildcards False ワイルドカードを使用する
MatchSoundsLike False あいまい検索(英)
MatchAllWordForms False 英単語の異なる活用形も検索する
MatchPrefix False 接頭辞に一致する
MatchSuffix False 接尾辞に一致する
MatchByte False 半角と全角を区別する
IgnoreSpace False 空白文字を無視する
IgnorePunct False 句読点を無視する
MatchFuzzy True あいまい検索(日)

以下、いくつかの設定について補足しますね。

完全に一致する単語だけを検索するMatchWholeWordプロパティ

設定内容については、その名前通りです。けっこう使いどころが多そうな印象がありますが、残念ながら単語の前後に半角スペースがないと機能しません。日本語ではちょっと使いづらいですね。

あいまい検索(英)MatchSoundsLikeプロパティ

日本語の呼び名よりも、プロパティ名のほうが説明としてはわかりやすいですね。Trueにすると、なんと発音が同じ英単語も含めて検索をするそうです。英語あまり使わないからわからないのですが、使いどころあるんでしょうか…。

あいまい検索(日)MatchFuzzyプロパティ

Trueにすると、ひらがなとカタカナや、「広」と「廣」などの漢字の異体字などの区別をなくして検索をします。

まとめ

Word VBAで検索オプションを設定して検索をする方法と、オプションに対応をするプロパティ一覧を紹介しました。

よく使うプロパティはMatchCaseプロパティ、MatchByteプロパティあたりでしょうか。

注意点としては、Wordアプリケーションを起動している間は、検索オプションは重ね掛けになりますので、実行のたびに必要に応じてFalseにすることを忘れないようにして下さいね。

次回は、Word VBAで検索の範囲や方向をコントロールする方法についてお伝えします。

Word VBAで検索の方向を変更する方法と文書全体を検索する方法
Word VBAでいろいろな検索や置換をする方法についてお伝えしています。今回はForwardプロパティで検索方向を変える方法、Wrapプロパティで文書全体を検索する方法についてお伝えします。

どうぞお楽しみに!

連載目次:Word VBAで色々な検索&置換をする方法

Word VBAのFindオブジェクトを使えば色々な条件で目的を探し当てて置換、書式設定、その他、いろいろな処理を施すことができます。Word VBAの検索の最初の一歩から順番にお伝えしていきます!
  1. Word VBAで文字列を検索するFindオブジェクトを使った最も基本のプログラム
  2. Word VBAでカーソル位置から連続で検索をして蛍光ペンでハイライトをする
  3. Word VBAで選択範囲のフォント設定を変更する方法とそのプロパティまとめ
  4. Word VBAで文字列を置換する方法!いくつかの基本パターンを徹底解説
  5. Word VBAで検索オプションを設定して検索をする方法とそのプロパティ一覧
  6. Word VBAで検索の方向を変更する方向と文書全体を検索する方法
  7. Word VBAでワイルドカードを使ったパターン検索をする方法
  8. Word VBAでワイルドカードを使ってパターンで超便利な置換をする方法