【问题标题】:Find all instances of yellow text and change font color to red查找黄色文本的所有实例并将字体颜色更改为红色
【发布时间】:2015-01-08 05:00:56
【问题描述】:

我需要一个 vba 宏来搜索 MS Word 2007 文档中字体颜色为黄色的所有文本并将其更改为红色。黄色不会显示在打印输出中。手动选择和更改将花费我数小时。

【问题讨论】:

    标签: vba ms-word


    【解决方案1】:

    从 stakx 的 Word 97 解决方案开始,以下是 Word 2010 中的工作原理:

    1. 打开查找和替换对话框(例如 Ctrl-H)
    2. 点击“查找内容”框。
    3. 格式下拉,字体,选择要找到的字体颜色,OK。
    4. 点击“替换为”框。
    5. 格式下拉,字体,选择最后的颜色,OK。
    6. 请注意,格式:“查找内容”和“替换为”的描述现在不同了。
    7. 根据需要替换/全部替换/查找下一个。

    您可以按如下方式确定原始颜色:

    1. 点击一段带有原始颜色的文本
    2. 打开调色板。如果既没有选择“主题颜色”也没有选择“标准颜色”,您可能需要点击“更多颜色”。

    【讨论】:

      【解决方案2】:
      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
      

      【讨论】:

      • Font.TextColor 属性仅在 Word 2010 中引入,在 Word 2007 对象模型中不可用。
      【解决方案3】:

      实际上有一个非编程解决方案。我已经在 Word 97 中尝试过,所以我认为 Word 2007 仍然允许这样做:

      1. 打开搜索和替换对话框。
      2. 勾选显示模式搜索(或类似名称)的复选框。
      3. 作为搜索词,输入(?)
      4. 选择搜索格式(黄色文本颜色)。
      5. 作为替换词,输入\1
      6. 选择替换的格式(红色文本颜色)。
      7. 然后搜索并替换所有内容。

      实际上可能不需要步骤 2、3 和 5(输入搜索和替换正则表达式)。

      如果你确实需要VBA代码,应该可以把上面的步骤记录成宏,然后看看生成的代码。

      【讨论】:

      • 在 Word 2013 中,如果您不使用任何内容作为搜索和替换术语,则此方法有效
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-26
      • 1970-01-01
      • 1970-01-01
      • 2021-03-27
      • 1970-01-01
      • 2021-10-26
      相关资源
      最近更新 更多