【问题标题】:Delete all highlighted text in Word document via Excel macro通过 Excel 宏删除 Word 文档中所有突出显示的文本
【发布时间】:2019-08-29 19:37:46
【问题描述】:

在本例中,我试图删除以某种颜色突出显示的特定 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 部分有关。谁能帮帮我?

【问题讨论】:

  • Word 的find 不能以这种方式与If 一起使用。我建议您尝试在 Word UI (Ctrl+H) 中查找突出显示颜色并录制宏以获取基础知识。此外,您可以 try 使用 Replace 并替换为空(空字符串 - 替换框中没有条目)。不确定这是否适用于突出显示...如果它不起作用,请根据录制的宏尽可能多地使用它,然后用它更新您的帖子并描述它是如何不起作用的。

标签: excel vba ms-word


【解决方案1】:

试试这个:

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.HighlightColorIndexproperty

我不会做cmets,对不起。

希望对你有帮助。

【讨论】:

    【解决方案2】:

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

    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
    

    【讨论】:

      猜你喜欢
      • 2011-08-31
      • 2013-08-20
      • 2013-10-17
      • 1970-01-01
      • 2012-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多