我注意到在VBA代码中,在模板文件中,关键词Me
的行为取决于文档是否具有ActiveX控件。
- 具有ActiveX控件的文档:
Me
引用从模板创建的新文件。 - 没有ActiveX控件的文档:
Me
引用模板而不是新文件。
为了演示这种奇怪的行为,我制作了两个示例文件:
这两个文件完全相同,它们之间唯一的区别是一个具有按钮,而另一个则没有。这两个文件的VBA代码如下:
Private Sub Document_New()
Selection.TypeText "Me keyword is referencing """ & Me.Name & """."
End Sub
如果您从这些模板中创建新文件,您会发现结果是不同的:使用 WithActiveX.dotm 模板时,内容为
“Me” 关键字引用了 “Document1”。 <-- 由上面的代码生成的字符串。
而在使用 WithoutActiveX.dotm 模板时,内容为
“Me” 关键字引用了 “WithoutActiveX.dotm”。 <-- 由上面的代码生成的字符串。
我进行了几次测试,得出结论:不一致性的来源是 ActiveX 控件的存在(控件没有与之相关联的代码:它只是存在于文档中)。
这是设计问题还是只是个 bug?
编辑 2017-06-13:这里描述的 bug 看起来已经部分修复,但仍然可以重现。现在只有在您使用这些模板之一创建新文档之前打开 Word 实例(如空白文档)才会发生此问题。