【发布时间】:2015-01-08 05:00:56
【问题描述】:
我需要一个 vba 宏来搜索 MS Word 2007 文档中字体颜色为黄色的所有文本并将其更改为红色。黄色不会显示在打印输出中。手动选择和更改将花费我数小时。
【问题讨论】:
我需要一个 vba 宏来搜索 MS Word 2007 文档中字体颜色为黄色的所有文本并将其更改为红色。黄色不会显示在打印输出中。手动选择和更改将花费我数小时。
【问题讨论】:
从 stakx 的 Word 97 解决方案开始,以下是 Word 2010 中的工作原理:
您可以按如下方式确定原始颜色:
【讨论】:
Sub ChangeColorWithReplace()
Selection.Find.ClearFormatting
Selection.Find.Font.Color = wdColorYellow
Selection.Find.Replacement.ClearFormatting
Selection.Find.Replacement.Font.Color = wdColorRed
With Selection.Find
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchKashida = False
.MatchDiacritics = False
.MatchAlefHamza = False
.MatchControl = False
.MatchByte = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub
此外,还有另一种方法。它不是特别快,但比手动操作要快:
Sub ChangeFontColorByCharacter()
Application.ScreenUpdating = False
Dim d As Document: Set d = ActiveDocument
For i = 1 To d.Characters.Count
If d.Characters(i).Font.TextColor.RGB = RGB(255, 255, 0) Then
d.Characters(i).Font.TextColor.RGB = RGB(255, 0, 0)
DoEvents
End If
Next
Application.ScreenUpdating = True
End Sub
【讨论】:
实际上有一个非编程解决方案。我已经在 Word 97 中尝试过,所以我认为 Word 2007 仍然允许这样做:
(?)。\1。实际上可能不需要步骤 2、3 和 5(输入搜索和替换正则表达式)。
如果你确实需要VBA代码,应该可以把上面的步骤记录成宏,然后看看生成的代码。
【讨论】: