【Word VBA】半角数字を蛍光ペンで着色するWordマクロ

2013年8月22日

最近、蛍光ペンのマーキングのマクロを2つ紹介しました。

【コード】キーワードを蛍光ペンで着色するWordマクロ

【コード】キーワードを蛍光ペンで着色するWordマクロ(その2)

また、応用技として、下線を引くマクロも紹介しました。

【コード】キーワードを一重下線でマーキングするWordマクロ

 

上記の3つのマクロでは、インプットボックスを使って、検索対象を入力しました。

今回は、検索対象をワイルドカードを設定する方法をご紹介します。

このマクロでできること

本文中の半角数字を黄色の蛍光ペンで着色します。

マクロの解説

これまでのマクロでは、対象となるキーワードを、InputBox関数を使って自由に入力できるようにしました。

今回は、「半角数字」を対象にすることが決まっているので、InputBox関数は利用しません。

その代わり、「検索と置換」ダイアログボックスの設定部分にて、半角数字を設定します(17行目)。

.Text = "[0-9]{1,}" '検索する文字列

お決まりの書き方です。

"[0-9]{1,}"は、半角数字を1回以上連続して繰り返している文字列のことです。

私たちは、これを「1桁以上の半角数字」と呼びます。

 

ワイルドカードの検索式は、以下のページで紹介されているPDFファイルに細かく記載しました。

参考にしてみてください。

ワイルドカード検索の資料

 

「検索と置換」ダイアログボックスにてワイルドカードを使うときには、検索オプションにて、[ワイルドカードを使用する] をオンにします。

これと同じ操作をマクロで設定します(29行目)。

.MatchWildcards = True   'ワイルドカードを使用する

ここでの重要なルールは、オンにする項目を一番最後に記載するということです。

今回のマクロではどこに書いても問題がありませんが、Selectionオブジェクトを使ってマクロを書く場合には、上記ルールを守る必要があります。

癖にしておくといいでしょう。

マクロ


Sub 半角数字を蛍光ペンで着色()

  Dim myRange As Range
  Dim myColor As String
  
  '現在の蛍光ペンの色を保存
  myColor = Options.DefaultHighlightColorIndex

  '蛍光ペンの色を黄色に設定
  Options.DefaultHighlightColorIndex = wdYellow

  'myRange(オブジェクト変数)を設定
  Set myRange = ActiveDocument.Range(0, 0)

  '一括置換を実行(「検索と置換」ダイアログボックスの設定)
  With myRange.Find
   .Text = "[0-9]{1,}" '検索する文字列
   .Replacement.Text = ""  '置換後の文字列(空欄でOK)
   .Replacement.Highlight = True '置換後の文字列の蛍光ペンをオン
   .Forward = True
   .Wrap = wdFindStop
   .Format = True       '書式の設定をオン
   .MatchCase = False     '大文字と小文字の区別する
   .MatchWholeWord = False   '完全に一致する単語だけを検索する
   .MatchByte = False      '半角と全角を区別する
   .MatchAllWordForms = False '英単語の異なる活用形を検索する
   .MatchSoundsLike = False  'あいまい検索(英)
   .MatchFuzzy = False     'あいまい検索(日)
   .MatchWildcards = True   'ワイルドカードを使用する
   .Execute Replace:=wdReplaceAll
  End With

  '蛍光ペンの色を元に戻す
  Options.DefaultHighlightColorIndex = myColor

  'myRangeを解放
  Set myRange = Nothing

End Sub

関連記事

【コード】キーワードを蛍光ペンで着色するWordマクロ

【コード】キーワードを蛍光ペンで着色するWordマクロ(その2)

【コード】キーワードを一重下線でマーキングするWordマクロ

ワイルドカード検索の資料

-コード
-, , ,