将代码应用于活动文档而不是使用 Documents.Add 打开的文档

Apply code to active document not document opened with Documents.Add

我从退休的同事那里得到了一个 VBA 项目。

我要改一个功能:

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

此处使用模板创建了一个新文档(另一个 Word 文件)。

此模板还涉及另一个项目“Common”中的数据。

基本上,Documents.Add Template:= _"c:\word\Link.dot" 在 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"

两者都没有发生,甚至没有运行时错误。我认为这是因为 Document_Open() 没有被执行。

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

虽然你可以直接执行代码。

ActiveDocument.AttachedTemplate = "c:\word\Link.dot"
Common.Initialize