

WordのVBAの塗りつぶしプロパティについて質問です。

＜やりたいこと＞  
番号リストVBAで、灰色で塗りつぶしがされている部分を検索・Selectionを取得する）  
塗りつぶしがされている部分について塗りつぶしを解除してその部分の前後に、"<" ">"を入れたい

＜作ってみたけど上手く動かなかったコード＞  
検索オプションとしてShading.BackgroundPatternColorIndexを選択してみたのですが、それを設定すると条件に引っかからなくなりました。

どなたか方法をご存知の方、ご教授していただくと本当に助かります。  
宜しくお願いします。

[code]

    Dim Rng As Range
    Set Rng = ActiveDocument.Range
        With Selection.Find
        .Font.Shading.BackgroundPatternColorIndex = 16
        Do While .Execute
          Selection.Range.Shading.BackgroundPatternColorIndex = 0
          Selection.Range.InsertAfter Text:=">**"
        　Selection.Range.InsertBefore Text:="**<"
        Loop
        End With
    End Sub
    
    
[/code]


CC BY-SA 4.0
2020-03-14T23:03:36.747
63844
2020-03-16T02:04:37.390
2020-03-15T03:10:17.867
32986
38218
question
vba ms-word
塗りつぶしがされている文字の検索方法について


通常のRangeについて蛍光ペンの色を取得/設定する時は[Shading.BackgroundPatternColorIndex](https://docs.microsoft.com/ja-
jp/dotnet/api/microsoft.office.interop.word.shading.backgroundpatterncolorindex?view=word-
pia)ではなく[HighlightColorIndex](https://docs.microsoft.com/ja-
jp/office/vba/api/word.range.highlightcolorindex)を使うようです。

[【コード】特定の色の蛍光ペンを消すWordマクロ](https://www.wordvbalab.com/code/5082/)の記事を参考に書き換えると良いでしょう。  
下記はサンプルコードです。  
サンプルコードでは行全体がハイライトされているとInsertAfterが次の項目の行頭に挿入されますのでご承知おきください。

[code]

    Sub ModifyHighlights()
        ActiveDocument.Range(0, 0).Select
        With Selection.Find
            .Highlight = True
            .Forward = True
            .Wrap = wdFindContinue
            Do While .Execute
                If Selection.Range.HighlightColorIndex = 16 Then
                    Selection.Range.HighlightColorIndex = wdNoHighlight
                    Selection.Range.InsertAfter Text:=">**" 
                    Selection.Range.InsertBefore Text:="**<" 
                End If
                Selection.Collapse Direction:=wdCollapseEnd
            Loop
        End With
    End Sub
    
[/code]


CC BY-SA 4.0
2020-03-16T02:04:37.390
63878
2020-03-16T02:04:37.390
9820
63844
answer