VBA Microsoft Word 2016宏用于删除下面没有文本的标题

时间:2016-07-16 20:28:46

标签: vba ms-word macros

我想为Word 2016创建一个VBA宏,删除没有正文的所有标题(即样式"标题1"和#34;标题2")在它下面。澄清一下,这就是我的意思。

  • 在运行宏之前:

水果

苹果和香蕉

蔬菜

谷物

面包和面食

  • 运行宏之后:

水果

苹果和香蕉

谷物

面包和面食

我已经能够制作宏来删除所有正文文本或删除所有标题,但是如何创建一个只删除没有正文文本的标题的宏?

1 个答案:

答案 0 :(得分:0)

这可以通过对文档中包含的段落进行简单的迭代来完成:

Sub CleanupHeadings()

    Dim p As Paragraph
    Dim pNext As Paragraph

    For Each p In ActiveDocument.Paragraphs
        If IsHeading(p) Then
            ' check the following paragraph
            Set pNext = p.Next
            If Not pNext Is Nothing Then
                If IsHeading(pNext) Then
                    ' next paragraph is a heading too, so delete current paragraph
                    p.Range.Delete
                End If
            Else
                ' no following paragraph, i.e. document ends with a heading
                p.Range.Delete
            End If
        End If
    Next

End Sub

Function IsHeading(para As Paragraph) As Boolean

    IsHeading = para.OutlineLevel < wdOutlineLevelBodyText

End Function