簡體   English   中英

查找黃色文本的所有實例並將字體顏色更改為紅色

[英]Find all instances of yellow text and change font color to red

我需要一個vba宏來搜索MS Word 2007文檔中字體顏色為黃色的所有文本並將其更改為紅色。 打印輸出中不會顯示黃色。 手動選擇和更改將花費我幾個小時。

繼stakx的Word 97解決方案之后,以下是Word 2010中的工作原理:

  1. 打開“查找和替換”對話框(例如Ctrl-H)
  2. 單擊“查找內容”框。
  3. 格式下拉菜單,字體,選擇要找到的字體顏色,確定。
  4. 單擊“替換為”框。
  5. 格式下拉菜單,字體,選擇最終的顏色,確定。
  6. 請注意,“查找內容”和“替換為”的格式:說明現在不同了。
  7. 根據需要更換/替換全部/查找下一個。

您可以按如下方式確定原始顏色:

  1. 點擊一些原始顏色的文字
  2. 打開調色板。 如果既未選擇“主題顏色”也未選擇“標准顏色”,則可能需要單擊“更多顏色”。

實際上有一個非編程解決方案。 我在Word 97中嘗試過,所以我假設Word 2007仍然允許這樣:

  1. 打開“ 搜索和替換”對話框。
  2. 勾選“ 模式搜索” (或類似)的復選框。
  3. 作為搜索詞,輸入(?)
  4. 選擇搜索格式(黃色文本顏色)。
  5. 作為替換術語,輸入\\1
  6. 選擇替換的格式(紅色文本顏色)。
  7. 然后搜索並替換所有內容。

可能實際上不需要步驟2,3和5(輸入搜索和替換正則表達式)。

如果你肯定需要VBA代碼,你應該能夠將上述步驟記錄為宏,然后查看生成的代碼。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM