【问题标题】:MS Word Macro - Delete ParagraphsMS Word 宏 - 删除段落
【发布时间】:2022-04-07 02:42:45
【问题描述】:

有人可以帮助我使用 MS Word 宏,它会在整个文档的每个段落中搜索特定符号并删除不包含该符号的段落。

我对 VBA 几乎一无所知,但刚收到一份庞大而笨重的文档,我需要快速编辑。

【问题讨论】:

    标签: vba ms-word


    【解决方案1】:

    这里有一个快速宏,应该可以做你想做的事——谨慎使用,不要忘记备份!

    将“搜索”的值设置为您要查找的文本。它非常粗略,如果您的文本没有出现在其中的某处,它将删除该段落。

    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 上尝试过。有点吓人,但似乎有效!

    【讨论】:

      【解决方案2】:

      保罗的回答是一个好的开始,但我认为已经过时了。我和 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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多