繁体   English   中英

Word VBA下一个段落样式未更新

[英]Word VBA next paragraph style not updating

我毫不客气地录制了一个宏来修改默认标题样式2-5,以将其.NextParagraphStyle更改为我自己制作的名称,称为Normal_lvl2,Normal_lvl3等:

With ActiveDocument.Styles("Heading 2").ParagraphFormat ' etc etc
    .LeftIndent = CentimetersToPoints(1.13)
    .RightIndent = CentimetersToPoints(0)
    .LineSpacingRule = wdLineSpaceDouble
    .Alignment = wdAlignParagraphLeft
    .FirstLineIndent = CentimetersToPoints(-0.63)
    .OutlineLevel = wdOutlineLevel2
    .NoSpaceBetweenParagraphsOfSameStyle = False
    .AutomaticallyUpdate = True
    .BaseStyle = "Normal"
    .NextParagraphStyle = "Normal_lvl2" ' here is the next style
End With

问题是,当我运行宏或手动设置行样式时,文档实际上并没有更新下一个段落样式。 新样式对于实际的标题行工作正常,但下一段不变。

我确实尝试遍历所有段落并设置样式,但是花了太长时间(我在运行20分钟后退出,文档为160页)。 具体来说,我将所有标题放入数组中,使用“查找”返回数组中每个标题的范围,并根据标题级别设置下一个范围样式。 也许不是最好的方法,但是我对Word Object Model不太熟悉。

所以我的问题是-是否有一种有效的方法来自动执行我的自定义样式的应用程序并确保下一个段落样式也被更改?

您应该遍历文档中的所有段落,然后像在以下示例中所做的那样相应地调整以下段落:

Sub ChangeParagraphsAfterHeading()

    Dim para As Paragraph
    Dim nextPara As Paragraph

    For Each para In ActiveDocument.Paragraphs
        If para.Style = "Heading 2" Then
            Set nextPara = para.Next
            If Not nextPara Is Nothing Then
                nextPara.Style = "Normal_lvl2"
            End If
        End If
    Next

End Sub

我假设您可能想要调整两个标题之间所有段落的样式。 上面的示例还没有做到这一点,但是应该可以帮助您入门。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM