在此示例中,我试图删除以特定颜色突出显示的特定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
部分有关。有人可以帮我吗?
答案 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