【发布时间】:2020-02-26 13:58:54
【问题描述】:
我正在尝试使用 VBA 清理我的 Word 文档。
我需要做的是找到一个特定的单词(通常是一个网站),然后选择它所在的行,然后选择然后删除上面的文本行(只有 1 行),以及该网站行下的行(有时超过 2 - 如果文本较长)。我将尝试向您展示这条线现在的样子。
某处发生了什么事!
website.com 08.01.2019
某事发生在某个地方,这是一个坏人做的。 他在代码中使用空格而不是制表符。
TAG-重要的东西
网站 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 的新手,因此我需要一些指示。
【问题讨论】:
-
这不是 100% 清楚的。宏应该如何知道“找到”什么?你会每次都把它输入宏吗?那么代码应该删除找到的词之前和之后的段落吗?
-
“行”不是 Word 对象。您可以对单词、句子或段落进行操作。您对
Selection.Expand Unit:=wdParagraph的概念很好,它删除了带有sugth for 一词的整个段落。在此处查看更多信息:docs.microsoft.com/en-us/office/vba/api/word.range.expand