将突出显示的文本更改为其他颜色

时间:2008-10-23 14:13:05

标签: vba ms-word word-vba highlighting word-2007

我有一些我在Word 2007中制作的简单的.doc文件,我在其中更改了文本颜色,并使用高光来比较一些类似的文本。我想做的是将绿色文本或灰色突出显示的任何实例更改为每种颜色的不同颜色。

我确信有一种简单的方法可以用VBA做到这一点,但也欢迎任何其他类型的答案。

编辑:虽然我很欣赏答案,但我可以将.doc文件保存为.docs。

4 个答案:

答案 0 :(得分:3)

这不是2007年,但这个想法应该适合。此示例将任何当前突出显示更改为新的默认突出显示(wdBrightGreen),将任何绿色文本更改为红色。

Sub ChangeColor
Options.DefaultHighlightColorIndex = wdBrightGreen

    Selection.Find.ClearFormatting
    Selection.Find.Highlight = True
    Selection.Find.Replacement.ClearFormatting
    Selection.Find.Replacement.Highlight = True
    Selection.Find.Execute Replace:=wdReplaceAll

    Selection.Find.ClearFormatting
    Selection.Find.Font.Color = wdColorBrightGreen
    Selection.Find.Replacement.ClearFormatting
    Selection.Find.Replacement.Font.Color = wdColorRed
    With Selection.Find
        .Text = ""
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub

答案 1 :(得分:1)

您始终可以将文件另存为HTML,并替换那里的颜色。颜色用

表示
<span style='color:red'>...

并突出显示

<span style='background:yellow;mso-highlight:yellow'>...

如果您的文档足够简单,应该易于操作。

编辑回答问题中的编辑:完成后,重新打开文件并将文件另存为.doc。

答案 2 :(得分:1)

我认为可以突出显示彩色文本的一部分,然后从“主页”选项卡上的“选择文本”菜单选项中选择“选择具有相似格式的文本”选项。然后只需选择所需的文字颜色。 希望这有效。

答案 3 :(得分:0)

这应该适用于您的目的:

Sub RehiliteAll()

    Const YOUR_REQUIRED_COLOR_IDX As Integer = 6 'RED'
    Dim doc As Range
    Set doc = ActiveDocument.Range

    With doc.Find
        .ClearFormatting 'resets default search options'
        .Highlight = True
        .Wrap = wdFindStop

        While .Execute

            If doc.HighlightColorIndex = YOUR_REQUIRED_COLOR_IDX Then
                doc.Select
                MsgBox doc.HighlightColorIndex
                'Do stuff here'
            End If

            'doc has been reassigned to the matching'
            'range; we do this so word keeps searching'
            'forward'
            doc.Collapse wdCollapseEnd
        Wend
    End With

    Set doc = Nothing
End Sub

'I am closing comment quotes so that SO formatting'
'does not get messed up too much.'