【Word VBA】特定の色の蛍光ペンを検索することはできるのか?

2011年5月27日

蛍光ペンをWordで使い始めると、どうしてもぶちあたる壁がこれ。

「特定の色の蛍光ペン」の文字列を探したい!!

結論からいうと、Wordの基本機能では無理ですね。

「検索と置換」ダイアログボックスでは、以下の通り、「蛍光ペン」というおおざっぱな条件で検索することしかできません。

蛍光ペン

色の特定ができないんですね。

なので、当然、「特定の色の蛍光ペンだけ解除したい」という場合も、Wordの基本機能では実現できません。

では、マクロをつかうと蛍光ペンを使った検索や置換がどこまで可能なのか?

マクロの自動記録を使ってつくったコードを改造していく方法を、今後ご紹介します。

今回は、一つ簡単なものをご紹介します。

このマクロでできること

文中の蛍光ペンが表示されたところを検索します。

色の指定をしていないので、どの色の蛍光ペンであっても検索します

解説

使う題材をマクロの自動記録でつくりました。

検索する文字列には何も入れていないので、検索条件のチェックマークには意味はありませんが、以下の通り、検索条件のチェックマークをすべて解除してあります。

蛍光ペン

マクロの記録では、マクロ中の3行目~5行目の部分がWith ステートメントの外に記載されます(マクロ(1))。

今回は、それらをWith ステートメント内に書いてみました(マクロ(2)の6行目~8行目)。

「検索」するのに、「置換」画面を開いてマクロの記録をしたのには理由があります。

ときどき、「置換後の文字列」欄に以前もちいた不要な文字列が記載されているために、マクロをうまく実行できないことがあります(ワイルドカードを使用する場合です。詳細は省略)。

そのようなことがないように、検索するマクロの記録をする場合であっても、置換画面をひらいて「置換後の文字列」欄の文字が入っていない状態で記録することをおすすめします。

マクロ(1) 自動記録でつくったもの


Sub Macro1()

  Selection.Find.ClearFormatting
  Selection.Find.Highlight = True
  Selection.Find.Replacement.ClearFormatting
  With Selection.Find
    .Text = ""
    .Replacement.Text = ""
    .Forward = True
    .Wrap = wdFindContinue
    .Format = True
    .MatchCase = False
    .MatchWholeWord = False
    .MatchByte = False
    .MatchAllWordForms = False
    .MatchSoundsLike = False
    .MatchWildcards = False
    .MatchFuzzy = False
  End With
  Selection.Find.Execute
End Sub

マクロ(2) 記載位置とタイトルを変更


Sub HightLight_Search()

  '蛍光ペンを探す

  With Selection.Find
    .ClearFormatting
    .Replacement.ClearFormatting
    .Highlight = True
    .Text = ""
    .Replacement.Text = ""
    .Forward = True
    .Wrap = wdFindContinue
    .Format = True
    .MatchCase = False
    .MatchWholeWord = False
    .MatchByte = False
    .MatchAllWordForms = False
    .MatchSoundsLike = False
    .MatchWildcards = False
    .MatchFuzzy = False
  End With
  Selection.Find.Execute
End Sub

あわせて読みたい!
https://www.wordvbalab.com/word-addin/iro-de-check/

-コード
-,