shikumika’s diary

日々の事務作業で手間なことを簡単にできる仕組み(自動化、方法など)、困ったことの解決方法を調べた備忘録

【Word VBA】蛍光ペンを検索し、色を判定して変更する方法

Wordで蛍光ペンを使って強調表示した後、「特定の色だけを別の色に変更したい」という場面はありませんか?
標準の「検索と置換」機能では蛍光ペンの色を指定できないため、VBAマクロを使うのが最も効率的です。
今回は、蛍光ペン付きの文字を検索し、色を判定して変更するマクロの事例をご紹介します。

内容:

確認のWordは「Microsoft® Word for Microsoft 365 MSO」 (バージョン 2510)です。

この方法(マクロ)のメリット

標準の「検索と置換」機能では蛍光ペンの色を指定できません。

この方法は、蛍光ペンの色を条件にして置換できます。
例:黄色 → 緑、ピンク → 削除  など

VBAマクロのサンプルコード

以下のコードは、黄色の蛍光ペンを緑に変更し、ピンクを削除する例です。

Sub 蛍光ペン色を検索して変換する()
    Dim 検索範囲 As Range
    Dim 検索結果 As Boolean
    
    ' 検索範囲を文書全体に設定
    Set 検索範囲 = ActiveDocument.Content
    
    With 検索範囲.Find
        .ClearFormatting
        .Highlight = True '蛍光ペン付きの文字を検索
        .Forward = True
        .Wrap = wdFindStop
        .Format = True
        
        ' 検索を開始
        検索結果 = .Execute
        Do While 検索結果
            ' 一致した蛍光ペンの色を判定'
            Select Case 検索範囲.HighlightColorIndex
                Case wdYellow
                    検索範囲.HighlightColorIndex = wdBrightGreen '黄色→緑'
                Case wdPink
                    検索範囲.HighlightColorIndex = wdNoHighlight 'ピンク→蛍光ペンなし'
            End Select
            
            ' 次の蛍光ペンを検索'
            検索結果 = .Execute
        Loop
    End With
End Sub
コードの補足説明
  • Find.Highlight = True で蛍光ペン付きの文字を検索
  • HighlightColorIndex で色を判定
  • Select Case で複数色の変換に対応
  • wdNoHighlight を使えば蛍光ペンを削除可能

検索条件に、特定の文字列や追加の書式(太字、フォントサイズなど)を設定することも可能です。これにより、目的に応じた柔軟な置換ができます。例えば、「蛍光ペン付きかつ太字の文字だけを解除する」など、複数条件を組み合わせた高度な検索もできます。

例えば、上記コードで検索条件の箇所に赤字部分を追加して、太字で特定の文字列を含む蛍光ペンの箇所だけ置換なども可能です。

With 検索範囲.Find
    .ClearFormatting
    .Highlight = True '蛍光ペン付きの文字を検索
    .Forward = True
    .Wrap = wdFindStop
    .Format = True
    .Font.Bold = True '太字の場合
    .Text = "○○" '特定の文字列を検索

 

(後略)

参考:マクロを使わず、蛍光ペンを解除する方法

蛍光ペンの色を指定しての置換はできませんが、標準の「検索と置換」機能で置換も可能です。

shikumika.org

以上、Word VBAで蛍光ペンを検索し、色を判定して変更する方法でした。