「『検索された項目の強調表示』機能 Word2007」や「Word2010における検索機能の紹介」で紹介した強調表示に関するマクロです。
選択されている文字列について、文書中で強調表示します。
Word2007以降に搭載された機能である、HitHighLight メソッドを用いました。
<目次>
このマクロでできること
Word文書中で文字列を選択している場合には、その文字列を文書全体で探して、同じ部分を強調表示(蛍光ペンは黄色、文字色は赤に設定)します。
選択部分から上だけ、または下だけ、というような部分的な強調表示はできません。あくまでも、文書全体で対応箇所が強調表示されます。
1.まず、文字列を選択します。
2.マクロを実行します。
マクロの解説
検索ルールは、「検索と置換」ダイアログボックスにあるものと同等のことができますので、ワイルドカードも使えます。(今回のマクロでは特に指定していません)
マクロ(1)の12行目、13行目(または、マクロ(2)の6行目、7行目)を変更すれば、強調表示する表現方法(蛍光ペンの色、文字色)を変更できます。
また、選択されている文字列の操作に関するマクロの記述は、「選択されている文字列を文書内で検索するマクロ」に似ていますので、ご覧ください。
もう一度繰り返し書きますが、前半のIfステートメントによる操作は、重要です。
Wordの仕様として、文字列が選択されていない場合にSelection.Textにて文字を取得すると、カーソルの右側の文字列が自動的に選択されてしまいます。
よって、文字が選択されていない場合(Selection.Start = Selection.End)には意図しない文字を選択することになるため、マクロ(1)のように前半部分で条件をいれています。(「【1行マクロ】文書中で文字列を選択しているかどうか調べる」に詳しく記載)
気にされない方は、マクロ(2)のようにしてもいいかもしれません。
短くなります。
マクロ(1)
Sub Text_HitHighLight_1() '選択中の文字列を文書中で強調表示 Dim myText As String If Selection.Start = Selection.End Then Exit Sub Else myText = Selection.text End If With ActiveDocument.Content.Find .ClearHitHighlight .HitHighLight FindText:=myText, _ HighlightColor:=wdColorYellow, _ TextColor:=wdColorRed End With End Sub
マクロ(2)
Sub Text_HitHighLight_2() '選択中の文字列を文書中で強調表示 With ActiveDocument.Content.Find .ClearHitHighlight .HitHighLight FindText:=Selection.Text, _ HighlightColor:=wdColorYellow, _ TextColor:=wdColorRed End With End Sub