Word宏

标题自动编号

Sub ApplyHeadingNumbering()
    Dim oListTempl As ListTemplate
    Dim oStyle As Style
    
    ' 创建新的多级列表模板
    Set oListTempl = ActiveDocument.ListTemplates.Add(True)
    
    With oListTempl
        ' 设置标题1(级别1)
        With .ListLevels(1)
            .NumberFormat = "%1"
            .NumberStyle = wdListNumberStyleArabic
            .TrailingCharacter = wdTrailingSpace
            .NumberPosition = 0
            .Alignment = wdListLevelAlignLeft
            .TextPosition = CentimetersToPoints(0.75)
            .ResetOnHigher = 0
            .StartAt = 1
        End With
        
        ' 设置标题2(级别2)
        With .ListLevels(2)
            .NumberFormat = "%1.%2"
            .NumberStyle = wdListNumberStyleArabic
            .TrailingCharacter = wdTrailingSpace
            .NumberPosition = CentimetersToPoints(0.75)
            .Alignment = wdListLevelAlignLeft
            .TextPosition = CentimetersToPoints(1.5)
            .ResetOnHigher = 1
            .StartAt = 1
        End With
        
        ' 设置标题3(级别3)
        With .ListLevels(3)
            .NumberFormat = "%1.%2.%3"
            .NumberStyle = wdListNumberStyleArabic
            .TrailingCharacter = wdTrailingSpace
            .NumberPosition = CentimetersToPoints(1.5)
            .Alignment = wdListLevelAlignLeft
            .TextPosition = CentimetersToPoints(2.25)
            .ResetOnHigher = 2
            .StartAt = 1
        End With
        
        ' 设置标题4(级别4)
        With .ListLevels(4)
            .NumberFormat = "%1.%2.%3.%4"
            .NumberStyle = wdListNumberStyleArabic
            .TrailingCharacter = wdTrailingSpace
            .NumberPosition = CentimetersToPoints(2.25)
            .Alignment = wdListLevelAlignLeft
            .TextPosition = CentimetersToPoints(3.0)
            .ResetOnHigher = 3
            .StartAt = 1
        End With
    End With

    ' 将样式链接到列表级别
    For Each oStyle In ActiveDocument.Styles
        Select Case oStyle.NameLocal
            Case "标题 1"
                oStyle.LinkToListTemplate oListTempl, 1
            Case "标题 2"
                oStyle.LinkToListTemplate oListTempl, 2
            Case "标题 3"
                oStyle.LinkToListTemplate oListTempl, 3
            Case "标题 4"
                oStyle.LinkToListTemplate oListTempl, 4
        End Select
    Next oStyle
End Sub