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)
'注意:标题后面可能不换行直接跟着内容,所以对第一句设置,而不是整段。
    '类似 一、开头的二级标题
    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
        'ib.Range.Font.ColorIndex = wdColorBlack
        'ib.Range.Font.Bold = False
        'ib.Range.Font.Size = 16
        'ib.Range.Font.Name = "黑体"
        ib.Range.Sentences(1).Font.ColorIndex = wdColorBlack
        ib.Range.Sentences(1).Bold = False '黑体一般不再加粗
        ib.Range.Sentences(1).Font.Name = "黑体"
        ib.Range.Sentences(1).Font.Size = 16

    '类似 (一)开头的三级标题
    ElseIf ib.Range Like "([一二三四五六七八九十百零千])*" Then
        If ib.Range.Sentences.Count = 1 Then
            'ib.Range.Style = wdStyleHeading3
            ib.OutlineLevel = wdOutlineLevel3
        End If
        ib.Range.Sentences(1).Font.ColorIndex = wdColorBlack
        ib.Range.Sentences(1).Bold = True
        ib.Range.Sentences(1).Font.Name = "楷体_GB2312"
        ib.Range.Sentences(1).Font.Size = 16

    '类似 1、或1.开头的四级标题
    ElseIf ib.Range Like "[0-9][、..]*" Then
        If ib.Range.Sentences.Count = 1 Then
            'ib.Range.Style = wdStyleHeading4
            ib.OutlineLevel = wdOutlineLevel4
        End If
        ib.Range.Sentences(1).Font.ColorIndex = wdColorBlack
        ib.Range.Sentences(1).Bold = True
        ib.Range.Sentences(1).Font.Name = "仿宋_GB2312"
        ib.Range.Sentences(1).Font.Size = 16
    '类似(1)开头的五级标题
    ElseIf ib.Range Like "([0-9])*" Then
        If ib.Range.Sentences.Count = 1 Then
            'ib.Range.Style = wdStyleHeading5
            ib.OutlineLevel = wdOutlineLevel5
        End If
        ib.Range.Sentences(1).Font.ColorIndex = wdColorBlack
        ib.Range.Sentences(1).Bold = True
        ib.Range.Sentences(1).Font.Name = "仿宋_GB2312"
        ib.Range.Sentences(1).Font.Size = 16
    End If
End Sub

猜你喜欢

转载自www.cnblogs.com/GuominQiu/p/12734784.html
今日推荐