Microsoft Word 删除段落中间包含特定单词的段落

Microsoft Word 删除段落中间包含特定单词的段落

这是我在这里的第一篇文章,所以请多多包涵。好的,既然已经完成了,让我们开始工作吧:在空闲时间,我会阅读一些网络小说和类似的东西,这些是我使用网络抓取工具等获得的。然后,我将抓取的内容保存在某个 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 段,从而跳过前一段。从最后选择段落可以解决这个问题。有些段落检查了两次,但这并不重要。

答案2

这可以通过简单的通配符替换来实现,前提是Patreon文本中永远不要使用后面跟着空格的单词。任何更复杂的操作都需要 VBA 宏。

查找内容:(*)Patreon (*)
替换为:\1\2

结果:

在此处输入图片描述

相关内容