18

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

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

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

这两个文件是相同的,它们之间的唯一区别是一个有按钮,另一个没有。这两个文件的 VBA 代码如下:

Private Sub Document_New()
    Selection.TypeText "Me keyword is referencing """ & Me.Name & """."
End Sub

如果您从这些模板创建一个新文件,您会发现结果不同:

WithActiveX.dotm 内容为

Me 关键字引用“Document1”。<-- 上面代码生成的字符串

而没有ActiveX.dotm 内容是

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

我进行了几次测试,得出的结论是不一致的根源是 ActiveX 控件的存在(没有与控件关联的代码:它仅存在于文档中)。

这是设计的东西还是只是一个错误?

编辑 2017-06-13:此处描述的错误似乎已部分修复,但仍可重现。现在,只有在使用这些模板之一(如空白文档)创建新文档之前打开了 Word 的实例时才会发生这种情况。

4

1 回答 1

1

那是一个错误。

根据 MSDN:

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

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

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

于 2018-08-02T20:54:02.793 回答