VBA操作WORD(七)設置每一級大綱式樣


摘抄自網絡的一些代碼,以備后用,部分也有修改。

部分來源於:

https://zhuanlan.zhihu.com/p/35695960 

  

Sub 設置每一級樣式格式()
    With ActiveDocument.Styles(wdStyleHeading1).Font
    .Color = wdColorBlack
    .Bold = False '標題不再加粗
    .Size = 22 '二號
    .Name = "方正小標宋簡體"
    End With
    With ActiveDocument.Styles(wdStyleHeading2).Font
    .Color = wdColorBlack
    .Bold = False '黑體一般不再加粗
    .Size = 16 '三號
    .Name = "黑體"
    End With
    With ActiveDocument.Styles(wdStyleHeading3).Font
    .Color = wdColorBlack
    .Bold = True
    .Size = 16
    .Name = "楷體_GB2312"
    End With
    With ActiveDocument.Styles(wdStyleHeading4).Font
    .Color = wdColorBlack
    .Bold = True
    .Size = 16
    .Name = "仿宋_GB2312"
    End With
    With ActiveDocument.Styles(wdStyleHeading5).Font
    .Color = wdColorBlack
    .Bold = False
    .Size = 16
    .Name = "仿宋_GB2312"
    End With
    With ActiveDocument.Styles(wdStyleNormal).Font    '設置正文普通文字格式
    .Color = wdColorBlack
    .Bold = False
    .Size = 16
    .Name = "仿宋_GB2312"
    End With
End Sub

 

調用類似

.Range.Style = wdStyleNormal '注意:設置為模板,如果將內容復制到其他word,會變成目標word所設置wdStyleNormal式樣,和源不同。

但是有兩個弊端,一是將內容復制到另外一份word文檔的時候,會變成目標word所設置的式樣。二是大綱標題有點,不適合公文等場合(或許可以設置去掉,不過我不知道)。

於是便手工設置:

Sub 設置每一級標題格式(ib As Paragraph)
'注意:標題后面可能不換行直接跟着內容,所以對第一句設置,而不是整段。
'注意:如果設置為模板,將內容復制到其他word,會變成目標word所設置wdStyleNormal式樣,和源不同。
'規則:如果只有一句話,才設置大綱級別,否則不設置。
    If ib.Range Like "[一二三四五六七八九十百零千]、*" Or ib.Range Like "[一二三四五六七八九十百零千]、*。*" Then
    '類似 一、開頭的二級標題
        If ib.Range.Sentences.Count = 1 Then
            'ib.Range.Style = wdStyleHeading2
            ib.OutlineLevel = wdOutlineLevel2
        End If
        With ib.Range.Sentences(1).Font 'ib.Range.Font
            .ColorIndex = wdColorBlack
            .Bold = False '黑體一般不再加粗
            .Name = "黑體"
            .Size = 16
        End With
    ElseIf ib.Range Like "([一二三四五六七八九十百零千])*" Then
    '類似 (一)開頭的三級標題
        If ib.Range.Sentences.Count = 1 Then
            'ib.Range.Style = wdStyleHeading3
            ib.OutlineLevel = wdOutlineLevel3
        End If
        With ib.Range.Sentences(1).Font
            .ColorIndex = wdColorBlack
            .Bold = True
            .Name = "楷體_GB2312"
            .Size = 16
        End With
    ElseIf ib.Range Like "[0-9][、..]*" Then
    '類似 1、或1.開頭的四級標題
        If ib.Range.Sentences.Count = 1 Then
            'ib.Range.Style = wdStyleHeading4
            ib.OutlineLevel = wdOutlineLevel4
        End If
        With ib.Range.Sentences(1).Font
            .ColorIndex = wdColorBlack
            .Bold = True
            .Name = "仿宋_GB2312"
            .Size = 16
        End With
    ElseIf ib.Range Like "([0-9])*" Then
    '類似(1)開頭的五級標題
        If ib.Range.Sentences.Count = 1 Then
            'ib.Range.Style = wdStyleHeading5
            ib.OutlineLevel = wdOutlineLevel5
        End If
        With ib.Range.Sentences(1).Font
            .ColorIndex = wdColorBlack
            .Bold = True
            .Name = "仿宋_GB2312"
            .Size = 16
        End With
    End If
End Sub

 


免責聲明!

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



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