Vba 从模板创建文档,然后在MailMerge事件中使用该文档

Vba 从模板创建文档,然后在MailMerge事件中使用该文档,vba,ms-word,Vba,Ms Word,在MailMerge应用程序事件中,访问通过打开启用宏的模板创建的文档对象的最佳方式是什么 更具体地说,我正在为启用宏的template.dotm编写代码。打开该模板时,它将创建一个新文档,通常称为Document1,并引用template.dotm 下面是Template.dotm的ThisDocument模块 这是我的事件处理程序类 Public WithEvents AppWithEvents As Word.Application Private Sub AppWithEvents_M

在MailMerge应用程序事件中,访问通过打开启用宏的模板创建的文档对象的最佳方式是什么

更具体地说,我正在为启用宏的template.dotm编写代码。打开该模板时,它将创建一个新文档,通常称为Document1,并引用template.dotm

下面是Template.dotm的ThisDocument模块

这是我的事件处理程序类

Public WithEvents AppWithEvents As Word.Application

Private Sub AppWithEvents_MailMergeBeforeRecordMerge(ByVal Doc As Document, Cancel As Boolean)
  'code needs to reference "Document1"
End Sub
在MailMergeBeforeRecordMerge过程中,我想访问Document1。接近于解决这一问题,但并非完全如此

什么不起作用:

此文档引用Template.dotm。 ActiveDocument引用邮件合并结果文件。 ActiveDocument.AttachedTemplate可能是一种方法,但我还没有弄清楚如何从模板对象解析文档对象。 在紧急情况下,我可能会循环浏览打开的文档,并通过文件名来识别它,但我不知道在运行此操作时用户可能打开了哪些其他文档,因此我更喜欢一种不易损坏的策略。
非常感谢您的建议。

那么您没有尝试引用邮件合并主文档,即使用参数Doc?文档1可能是一个完全不同的文档?哇。就在我眼前,真是尴尬。你是对的:文档是Document1。
Public WithEvents AppWithEvents As Word.Application

Private Sub AppWithEvents_MailMergeBeforeRecordMerge(ByVal Doc As Document, Cancel As Boolean)
  'code needs to reference "Document1"
End Sub