我正在尝试使用VBA清理Word文档。
某处发生了什么事!
website.com 08.01.2019
某处发生了某些事情,这是一个坏人。 他在代码中使用空格而不是制表符。
重要的标签
该网站99%的时间未显示在第一行,因此我试图找到第二行。 我还想保留其他网站和文本(因此会跳过newsbetter.com) 在每个文档中,大约有30-100个像我早先键入的那样的段落(确实删除了)
我一直在互联网上寻找可能的解决方案,但它们通常用于Excel。我认为字符串在这里对我不起作用。
Sub ScratchMacroII()
Dim oRng As Word.Range
Set oRng = ActiveDocument.Range
With oRng.Find
.Text = "news.pl"
While .Execute
While oRng.Find.Found
oRng.Select
Selection.Expand Unit:=wdParagraph
Selection.Delete
Wend
End With
End Sub
我希望结果删除整个段落,但只是删除一行而剩下另一行。因为我是VBA的新手,所以我需要一些指针。
答案 0 :(得分:0)
以下代码基于问题中的示例,从文档的开头到结尾搜索术语。找到后,删除该术语之后和之前的段落。然后,将搜索Range
设置为文档内容遵循找到的实例,这样就不会重复拾取同一实例。
请注意,我加入了Find.Wrap = wdFindStop
是为了防止代码再次循环遍历文档。还必须在循环中重复Execute
方法,而不是尝试在其上循环。 While...Wend
是旧的循环类型;首选Do While...Loop
。
Sub ScratchMacroII()
Dim oRng As Word.Range
Dim para As Word.Paragraph
Dim found As Boolean
Set oRng = ActiveDocument.Range
With oRng.Find
.Text = "news.pl"
.wrap = wdFindStop
found = .Execute
Do While found
Set para = oRng.Next(wdParagraph, 1).Paragraphs(1)
para.Range.Delete
Set para = oRng.Next(wdParagraph, -1).Paragraphs(1)
para.Range.Delete
oRng.Collapse wdCollapseEnd
oRng.End = ActiveDocument.content.End
found = oRng.Find.Execute
Loop
End With
End Sub