MS Word VBA:获取文档的附件模板

时间:2016-11-06 13:49:19

标签: vba templates ms-word

(使用Windows 10和MS Word 2016.全局模板为:Normal.dotx和Autoload.dotm。某些文档的附加模板是:Reference.dotx)

大家好,

我在VBA中获取文档的附加模板时遇到问题。

我有一个加载MS Word时加载的全局模板,称为Autoload.dotm。但是,对于某些特定文档,它们使用附加模板,该模板不是全局模板(Autload.dotm)或常规模板(Normal.dotx)。此附加模板称为Reference.dotx。

所以我使用ActiveDocument.AttachedTemplate。但这会返回Autoload.dotm,而不是Reference.dotx。我需要查看Developer->文档模板 - >模板选项卡 - >文档模板中定义的附加模板是否为Reference.dotx。 (不要认为它有所作为,但是"自动更新文档样式"复选框已选中。)有人知道如果文档使用Reference.dotx我怎么能找到?我不需要返回任何全局模板。

我尝试获取附加模板的代码很简单:

    If (ActiveDocument.AttachedTemplate = "Reference.dotx") Then
        PrepareDocument_enabled = True
    End If

1 个答案:

答案 0 :(得分:0)

也许这会对你有帮助吗?它将显示使用的模板。

Sub Macro1()
Dim strPath As String
    strPath = Dialogs(wdDialogToolsTemplates).Template
    MsgBox strPath
End Sub

否则,您可以使用它来更改模板

Sub ChangeAttachedTemplate()
Dim oDoc As Document
Dim oTemplate As Template
Dim strTemplatePath As String

Set oDoc = ActiveDocument

If oDoc.Type = wdTypeTemplate Then Exit Sub

Set oTemplate = oDoc.AttachedTemplate

Debug.Print oTemplate.FullName

' Path is probably: C:\Users\USERNAME\AppData\Roaming\Microsoft\Templates\
If InStr(UCase(oTemplate.FullName), UCase("Path of the template")) > 0 Then
     oDoc.AttachedTemplate = "PATH TO TEMPLATE" & "TEMPLATE NAME.dotm"
End If
End Sub