通过Excel宏删除Word文档中所有突出显示的文本

时间:2019-08-28 18:50:43

标签: excel vba ms-word

在此示例中,我试图删除以特定颜色突出显示的特定Word文档中的所有内容; wdYellow。我下面有一些代码可以打开Word文档,尝试查找突出显示的位置并相应地将其删除。

Set wrdApp = New Word.Application
strFilePath = ThisWorkbook.Path
Set wrdDoc = wrdApp.Documents.Add(strFilePath & "\test.docx")

With wrdDoc.Content.Find
    If .Highlight = wdYellow Then
        .text = ""
    End If
End With

wrdDoc.SaveAs (strFilePath & "\test.docx")
wrdApp.Quit

Set wrdDoc = Nothing
Set wrdApp = Nothing

因此该代码在一定程度上可以工作... 实际上没有用wdYellow找到任何亮点,因此它将永远无法到达 .text = ""。但是除此之外,它可以正常运行。我相信该错误与With wrdDoc.Content.Find部分有关。有人可以帮我吗?

2 个答案:

答案 0 :(得分:0)

尝试这个:

Dim wrdApp As Object

Set wrdApp = CreateObject("Word.Application")
strFilePath = ThisWorkbook.Path
wrdApp.Visible = True
wrdApp.Documents.Open (strFilePath & "\test.docx")
wrdApp.Selection.Find.Highlight = True
wrdApp.Selection.Find.Execute Replace:=wdReplaceAll

使用此代码,您将在文件中获得所有突出显示的文本。 .highlight是boolean value,因此不能为wdYellow。如果需要检查颜色,请使用Range.HighlightColorIndex property

对不起,我无法发表评论。

希望有帮助。

答案 1 :(得分:0)

宏记录器提供以下内容,该内容成功替换了以黄色突出显示的所有文本。您可以将其集成到您的代码框架中。

Sub DeleteHighlightedText()
'
' DeleteHighlightedText Macro
'
'
    ActiveDocument.content.HighlightColorIndex = wdYellow
    With Selection.Find
        .ClearFormatting
        .Highlight = True
        .Replacement.ClearFormatting
        .Text = ""
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchKashida = False
        .MatchDiacritics = False
        .MatchAlefHamza = False
        .MatchControl = False
        .MatchByte = False
        .CorrectHangulEndings = False
        .HanjaPhoneticHangul = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub
相关问题