【发布时间】:2022-04-07 02:42:45
【问题描述】:
有人可以帮助我使用 MS Word 宏,它会在整个文档的每个段落中搜索特定符号并删除不包含该符号的段落。
我对 VBA 几乎一无所知,但刚收到一份庞大而笨重的文档,我需要快速编辑。
【问题讨论】:
有人可以帮助我使用 MS Word 宏,它会在整个文档的每个段落中搜索特定符号并删除不包含该符号的段落。
我对 VBA 几乎一无所知,但刚收到一份庞大而笨重的文档,我需要快速编辑。
【问题讨论】:
这里有一个快速宏,应该可以做你想做的事——谨慎使用,不要忘记备份!
将“搜索”的值设置为您要查找的文本。它非常粗略,如果您的文本没有出现在其中的某处,它将删除该段落。
Sub DeleteParagraphContainingString()
Dim search As String
search = "delete me"
Dim para As Paragraph
For Each para In ActiveDocument.Paragraphs
Dim txt As String
txt = para.Range.Text
If Not InStr(LCase(txt), search) Then
para.Range.Delete
End If
Next
End Sub
我已经在 Office 2007 上尝试过。有点吓人,但似乎有效!
【讨论】:
保罗的回答是一个好的开始,但我认为已经过时了。我和 OP 有同样的问题,但必须修改 Paul 的答案才能在 Word 2016 中工作。请记住,如果 InStr 返回 0 则意味着它找不到匹配项,如果它返回 >0 则意味着它确实找到了匹配项。因此,如果您想翻转代码以删除仅找到的匹配项,请将“=”更改为“>”。 我希望这对未来的读者有所帮助。 PS:这段代码非常棒,可以帮助清理 Zoom 通话中的自动转录!
Dim search As String
search = "delete me"
Dim para As Paragraph
For Each para In ActiveDocument.Paragraphs
Dim txt As String
txt = para.Range.Text
If InStr(LCase(txt), LCase(search)) = 0 Then
para.Range.Delete
End If
Next
【讨论】: