“第一条”被添加到Word中的标题1样式中

时间:2017-12-13 13:33:16

标签: vba ms-word word-vba

我正在尝试将样式从Word模板复制到另一个Word文件。我使用的代码如下:

Sub CommandButton1_Click()

Dim stl As Style
'On Error GoTo theCopy
Application.ScreenUpdating = False

ActiveDocument.CopyStylesFromTemplate("C:\Users\rajtilak\Desktop\Report.dotx")

p = ActiveDocument.Sections.Count

For j = 1 To p
    'Header
    If ActiveDocument.Sections(j).Headers(wdHeaderFooterPrimary).LinkToPrevious = True Then
    ActiveDocument.Sections(j).Headers(wdHeaderFooterPrimary).LinkToPrevious = False
    End If
        If ActiveDocument.Sections(j).Headers(wdHeaderFooterFirstPage).LinkToPrevious = True Then
        ActiveDocument.Sections(j).Headers(wdHeaderFooterFirstPage).LinkToPrevious = False
    End If

    'Footer
    If ActiveDocument.Sections(j).Footers(wdHeaderFooterPrimary).LinkToPrevious = True Then
    ActiveDocument.Sections(j).Footers(wdHeaderFooterPrimary).LinkToPrevious = False
    End If
        If ActiveDocument.Sections(j).Footers(wdHeaderFooterFirstPage).LinkToPrevious = True Then
        ActiveDocument.Sections(j).Footers(wdHeaderFooterFirstPage).LinkToPrevious = False
    End If
Next j

Application.ScreenUpdating = True
MsgBox "Styles Successfully Copied"

End Sub

这很好用。但是,在复制样式后,当我尝试使用以下代码更改所有样式的默认字体时,短语“Article I”将附加到样式:

For Each stl In ActiveDocument.Styles
    stl.Font.Name = "Georgia"
Next

有人可以帮我理解为什么会这样吗?任何帮助都将受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

您的CommandButton1_Click程序不会复制任何样式。它只是将页眉和页脚彼此分开(或尝试这样做 - 我不知道它会起作用)。

您的第二个代码段尝试更改ActiveDocument中所有样式的字体名称。这是一个非常高的订单,因为有使用的样式和未使用的样式,默认样式和用户定义的样式,其中有几十个。有段落样式和字符样式,以及两者都可以。

每个样式都有自己的Font对象。每个Font对象都具有Name属性,但某些样式的格式设置为从其他样式继承其Font。像您尝试的总括性订单必须产生混淆,例如,当您的代码尝试更改从另一个字体继承的字体名称时,该字体的名称将仅在循环的后期更改。老实说,没有人知道代码会导致什么破坏或结果会是什么。

当您尝试更改样式时,最好一次一个地将它们提交给您的手术。但是,下面的代码行很可能会完成您想要的任务。

ActiveDocument.Styles(wdStyleNormal).Font.Name = "Georgia"

这将更改Normal样式字体,并且由于您大多数使用Normal字体,因此更改将会非常深远。

至于在文档之间复制样式,我建议你google for"从另一个文档复制样式"。与您编写的任何VBA代码相比,只需点击几下即可完成此操作。