使用 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
我尝试了以下方法,但有两个问题:
- 它用 0(默认背景的颜色索引)替换 testA,用 2(即 testA 的颜色索引)替换 testB
- 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
假设 MS Word 2007/2010 文档中的以下文本,我用蓝色突出显示 "testA",用绿色突出显示 "testB":"This is testA and testB."。我想以编程方式将 testA 替换为其背景颜色索引 2,并将 testB 替换为其背景颜色索引 11。参考:WdColorIndex Enumeration
我尝试了以下方法,但有两个问题:
- 它用 0(默认背景的颜色索引)替换 testA,用 2(即 testA 的颜色索引)替换 testB
- 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