![Microsoft Word 删除段落中间包含特定单词的段落](https://linux22.com/image/1614616/Microsoft%20Word%20%E5%88%A0%E9%99%A4%E6%AE%B5%E8%90%BD%E4%B8%AD%E9%97%B4%E5%8C%85%E5%90%AB%E7%89%B9%E5%AE%9A%E5%8D%95%E8%AF%8D%E7%9A%84%E6%AE%B5%E8%90%BD.png)
这是我在这里的第一篇文章,所以请多多包涵。好的,既然已经完成了,让我们开始工作吧:在空闲时间,我会阅读一些网络小说和类似的东西,这些是我使用网络抓取工具等获得的。然后,我将抓取的内容保存在某个 docx 文件中,通常一个文件中有 100 个章节。这就是有趣的事情发生的地方。
章节格式如下:标题章节在新页面中,有 1 个段落空间,然后是章节文本。前几段(有时有 1 行,有时有 2 行,有时没有)中 80% 的时间是译者的话,他通常会在这里要求付款或提到 Patreon。例如
第一章:标题
oasdasd asdasdasd Patreon sdasd asdasd asda
文本文本文本文本文本文本文本分页符
第 2 章:标题回归
texttexttext texttexttext text PAGE BREAK
第 3 章:Titleception
oasdasd Patreon 再次 sdasd asdasd asda
文本文本文本文本文本文本文本文本
所以我想用通配符删除包含单词“Patreon”的段落。如果段落以该词开头,那么删除起来很容易,但事实并非如此,它位于段落中间。
我尝试用(Chapter ???*^13)(* Patreon *^13)(*)
来替换\1\3
,但它没有按预期工作,特别是如果段落不包含单词 Patreon,那么它会选择两次出现之间的所有内容,例如本例中的第 1 章和第 3 章之间。
请有人帮我用这个简单的通配符
答案1
如果您愿意使用宏,那么只需以下几行代码即可。
要插入宏,请按键盘上的 Alt+F11。然后从顶部的菜单栏中选择插入 > 模块。
在模块内,粘贴以下代码:
Sub delete_para()
num_para = ActiveDocument.Paragraphs.Count 'checks the number of paragraphs in the document
For i = 1 To num_para
'select the paragraphs one by one
ActiveDocument.Paragraphs(num_para + 1 - i).Range.Select
'check if the required word exists in the pparagraph
x = Selection.Find.Execute("atreon")
'if it does, then select the paragraph and delete it
If x = True Then
ActiveDocument.Paragraphs(num_para + 1 - i).Range.Select
Selection.delete
End If
Next i
End Sub
定义完宏后,返回文档。在功能区的“开发人员”选项卡中,单击“宏”。您的宏将显示在那里。选择它并单击“运行”按钮。
以 ' 字符开头的行是注释,仅用于理解代码。我只搜索了阿曲隆因为 P 可以是大写也可以是小写,所以我无法让这段代码以不区分大小写的方式工作。
我还从最后选择了段落,因为否则当它删除第 3 段时,第 4 段会变成第 3 段。但在下一步中,它会选择第 4 段,从而跳过前一段。从最后选择段落可以解决这个问题。有些段落检查了两次,但这并不重要。