VBA操作WORD(八)設置標題格式(含主、副標題)


因為主標題和副標題一般都是包含一兩句子的段落,所以參數直接傳入Paragraph。至於判斷主副標題的規則則外面調用部分再做判斷。

Sub 設置主標題格式(ib As Paragraph)
    'With ActiveDocument.Paragraphs(1).Range
        '.Style = ActiveDocument.Styles(wdStyleHeading1)'設置為標題1
        '.ParagraphFormat.Alignment = wdAlignParagraphCenter '居中
        '.ParagraphFormat.SpaceAfter = 0
        '.ParagraphFormat.SpaceBefore = 0
        '.ParagraphFormat.LineSpacingRule = wdLineSpaceAtLeast
        '.ParagraphFormat.LineSpacing = Word.Application.LinesToPoints(0)

    With ib
        .Format.Reset '有必要,如果原來段首縮進2字符的話,那么設置居中也會縮進2字符造成不是居中
        .OutlineLevel = wdOutlineLevel1 '設置大綱1級
        .Alignment = wdAlignParagraphCenter
        '設置行間距
        'Word.Application.LinesToPoints(1) 是設置為段后1行的高度,不是標題下方空一行(后面采取空一行的方式)
        .SpaceAfter = 0 '12 ''設置段后一行的高度
        .SpaceBefore = 0 '12
        .LineSpacingRule = wdLineSpaceAtLeast '行間距設置為最小值
        .LineSpacing = Word.Application.LinesToPoints(0) '最小值0。TODO:M$ word下會報錯
        '設置字體
        .Range.Font.ColorIndex = wdBlack
        .Range.Font.Bold = False
        .Range.Font.Name = "方正小標宋簡體"
        .Range.Font.Size = 22
    End With
End Sub

 

Sub 設置副標題格式(ib As Paragraph)
    With ib
        .Format.Reset
        .CharacterUnitFirstLineIndent = 0
        .Alignment = wdAlignParagraphCenter
        .SpaceAfter = 0
        .SpaceBefore = 0
        .LineSpacingRule = wdLineSpaceExactly
        .LineSpacing = Word.Application.LinesToPoints(2.5) '1行的高度為12磅,2.5行就是30磅
        '設置字體
        .Range.Font.ColorIndex = wdBlack
        .Range.Font.Bold = False
        .Range.Font.Name = "楷體_GB2312"
        .Range.Font.Size = 16
    End With
End Sub

 

調用主標題和副標題設置,並且在標題下方增加一空行(注意,不是段后一行的高度,兩者不是一回事)。

    '設置標題行。默認為第一段為標題,不考慮標題用換行符分行的情形(格式化好后手工分行即可)
    Call 設置主標題格式(ActiveDocument.Paragraphs(1))
    
    '設置副標題:如果第二段不是空行,且不是以句號或者冒號(報告類公文)結尾,那么認為是副標題或單位名稱(發言材料等文體)
    If Len(ActiveDocument.Paragraphs(2).Range.Text) > 1 _
            And ActiveDocument.Paragraphs(2).Range.Characters.Last.Previous <> "" _
            And ActiveDocument.Paragraphs(2).Range.Characters.Last.Previous <> "" Then
        Call 設置副標題格式(ActiveDocument.Paragraphs(2))
    
    '公文:如果標題的下一行多於1個字符(換行符算1個字符),那么就插入一空行,否則不用。
        If Len(ActiveDocument.Paragraphs(2).Next.Range.Text) > 1 Then
            ActiveDocument.Paragraphs(2).Range.InsertParagraphAfter '在當前文檔的第一段之后插入一個新段落
        End If
    
    ElseIf Len(ActiveDocument.Paragraphs(1).Next.Range.Text) > 1 Then
        ActiveDocument.Paragraphs(1).Range.InsertParagraphAfter '在當前文檔的第一段之后插入一個新段落
    End If

主副標題判斷的邏輯見注釋。

需要注意的是,上述代碼對於只有兩個或以內段落的文檔而言,會報錯,因為標題下方插入空行需要判斷第三行,如果沒有第三行,自然會出錯。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM