0

我从一位已经退休的老同事那里得到了一个 VBA 项目,他对此感到绝望。

该项目本身有效,但我必须更改一个功能:

Documents.Add Template:= _
    "c:\word\Link.dot", _
    NewTemplate:=False, DocumentType:=0

这里使用模板创建了一个新文档(另一个 Word 文件)。问题是这个模板还涉及来自另一个项目“Common”的数据。基本上,Link.dot 中的 "Documents.Add Template:= _"c:\word\Link.dot"" 会执行 Document_Open() 并初始化 Common 项目。

Private Sub Document_Open()
    Common.Initialize
End Sub

问题是我不希望 Documents.add 打开第二个文档,它应该使用已经处于活动状态的文档,而不是第二个。

我已经尝试过这两种变体:

#1
Dim oDoc As Document
    Set oDoc = ActiveDocument
    oDoc.AttachedTemplate = "c:\word\Link.dot"

#2
ActiveDocument.AttachedTemplate = "c:\word\Link.dot"

不幸的是,他们两个都没有发生任何事情,甚至没有 RuntimeError。我认为这是因为 Document_Open() 没有被执行。也许我走错了路......

有人有建议吗?

4

1 回答 1

1

Document_Open()响应 Open 事件。由于您在附加模板时没有打开文档,因此它不会执行。

您可以直接执行代码。

ActiveDocument.AttachedTemplate = "c:\word\Link.dot"
Common.Initialize
于 2022-02-02T13:05:39.760 回答