当模板具有 autonew() 宏时,如何使用 VBA 打开文档并删除其附加模板

问题描述 投票:0回答:1

VBA 宏可用于打开文档并修改或操作它,但如果文档是由具有 autonew() 宏的模板创建的,则宏在打开文档后立即停止运行(没有任何错误消息)文件。

我通过让宏执行以下步骤来测试这一点:

  1. 打开Normal.dotx附带的文档,

  2. 附加具有 autonew() 宏的不同模板

  3. 保存并关闭文档

  4. 重新打开文档

  5. 显示带有文件名的消息框。

Documents.Open strPath & "test.docx"
With ActiveDocument
    .AttachedTemplate = strPathToTemplate & strTemplateName 'template with an autonew() macro
    .Save
    .Close
End with
Documents.Open strPath & "test.docx"
Msgbox ActiveDocument.Name

第一次运行宏,在步骤 4 后停止,test.doc 作为活动文档保持打开状态。 不显示该消息,也没有任何错误消息。

再次运行宏(但打开文档),它会显示消息(即执行步骤 5)。

当我将第三行“.AttachedTemplate = ...”更改为指向启用宏的模板而没有 autonew() 或 autoopen() 宏时,宏不会在步骤 4 处停止并显示消息。

vba templates ms-word
1个回答
0
投票

这种方法对我有用:

Sub Test()
Dim wdDoc As Document
Const StrDocNm As String = "Document Path\Test.docx"
Const StrTmplt As String = "Template Path\Template.dotm"
Set wdDoc = Documents.Open(FileName:=StrDocNm)
With wdDoc
    .AttachedTemplate = StrTmplt
    .Close True
End With
Set wdDoc = Documents.Open(FileName:=StrDocNm)
MsgBox wdDoc.Name
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.