将代码应用于活动文档而不是使用 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
我从退休的同事那里得到了一个 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