使用 MS Word VBA 如何使用突出显示颜色的值查找和替换突出显示的文本

Using MS Word VBA how to Find and Replace highlighted text with the value of the highlight color

假设 MS Word 2007/2010 文档中的以下文本,我用蓝色突出显示 "testA",用绿色突出显示 "testB":"This is testA and testB."。我想以编程方式将 testA 替换为其背景颜色索引 2,并将 testB 替换为其背景颜色索引 11。参考:WdColorIndex Enumeration

我尝试了以下方法,但有两个问题:

  1. 它用 0(默认背景的颜色索引)替换 testA,用 2(即 testA 的颜色索引)替换 testB
  2. While循环没有结束

我希望替换的文本为:"This is 2 and 11"。相反,我得到:"This is 0 and 2".

任何使用 VBA 或 C# 的更正都可以。

Sub ReplaceHighlightedTextColor()

    With Selection.Find
        .ClearFormatting
        .Highlight = True
        While .Execute(Forward:=True, Format:=True, ReplaceWith:=CStr(Selection.FormattedText.HighlightColorIndex))
        Wend
    End With

End Sub

试试这个:

Sub ReplaceHighlightedTextColor()

    Dim rng As Range

    Set rng = Selection.Range

    With rng.Find

        .ClearFormatting
        .Highlight = True

        While .Execute(Forward:=True, Format:=True) 
            'Note: 'rng' is now the range containing the matched content
            rng.Text = rng.FormattedText.HighlightColorIndex
        Wend

    End With

End Sub