在MS Word中,如何将一系列颜色(例如,偏红色)替换为单一颜色

时间:2018-01-20 17:45:57

标签: vba colors ms-word

我有一个每周使用的扫描/ OCR文档,但并非所有" reds"是相同的,也不是所有的"黑人"真黑。有一系列红色到粉红色和黑色到灰色。我想将这两种颜色标准化为深红色和真正的黑色,而不必遍历每一页(超过200页,每种颜色都有两种颜色的不同色调)。

有没有办法根据RGB属性中的范围选择文本,例如R> 200,G< 100,B< 100?

在没有更简单,更优雅的方式的情况下,我想我可以使用嵌套循环,但这会迭代50万次。

1 个答案:

答案 0 :(得分:0)

一次通过无法对一系列颜色进行查找/替换。您必须为要更改的每个可想到的RGB组合编码。例如:

Sub Demo()
Application.ScreenUpdating = False
Dim R As Long, G As Long, B As Long
With ActiveDocument.Range
  With .Find
    .ClearFormatting
    .Replacement.ClearFormatting
    .Text = ""
    .Replacement.Text = ""
    .Forward = True
    .Wrap = wdFindContinue
    .Format = True
    .MatchCase = False
    .MatchWholeWord = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
    For R = 201 To 255
      For G = 0 To 99
        For B = 0 To 99
          .Font.Color = RGB(R, G, B)
          .Replacement.Font.ColorIndex = wdRed
          .Execute Replace:=wdReplaceAll
        Next
        DoEvents
      Next
    Next
  End With
End With
Application.ScreenUpdating = True
End Sub

根据您的规格要做539,055次迭代,不要指望快速结果。