Me关键字的行为不一致

Die*_*roz 18 vba word-vba

我注意到模板文件Me中VBA代码中关键字的行为是不同的,这取决于文档是否具有ActiveX控件.

  • 带有ActiveX控件的文档:Me引用从模板创建的新文件.
  • 没有ActiveX控件的文档:Me引用模板而不是新文件.

为了演示这种奇怪的行为,我做了两个示例文件:

两个文件都是相同的,它们之间的唯一区别是一个有一个Button而另一个没有.两个文件的VBA代码如下:

Private Sub Document_New()
    Selection.TypeText "Me keyword is referencing """ & Me.Name & """."
End Sub
Run Code Online (Sandbox Code Playgroud)

如果您从这些模板创建新文件,您将意识到结果是不同的:

WithActiveX.dotm的内容是

Me关键字引用"Document1".< - 由上面的代码生成的字符串

而WithoutActiveX.dotm的内容是

Me关键字引用"WithoutActiveX.dotm".< - 由上面的代码生成的字符串

我做了几个测试,得出结论,不一致的来源是ActiveX控件的存在(没有与控件相关的代码:它只存在于文档中).

这是设计还是只是一个bug?

编辑2017-06-13:这里描述的错误似乎是部分修复的,但它仍然是可重现的.现在,只有在使用其中一个模板(如空白文档)创建新文档之前,才会打开Word实例.

Hac*_*ash 1

这是一个错误。

根据 MSDN:

Me提供了一种方法来引用正在执行代码的类的特定实例。

对我来说,这意味着它应该始终是新文档。确保您没有意外运行模板中的代码。

来源: https://msdn.microsoft.com/en-us/vba/language-reference-vba/articles/me-keyword