我注意到模板文件中VBA代码中Me
关键字的行为会有所不同,具体取决于文档是否包含ActiveX控件。
Me
引用从模板创建的新文件。Me
引用模板而不是新文件。为了演示这种奇怪的行为,我制作了两个示例文件:
两个文件都是相同的,它们之间的唯一区别是一个有一个Button而另一个没有。两个文件的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控件的存在(没有与控件关联的代码:它只存在于文档中)。
这是设计还是只是一个错误?
编辑2017-06-13 :此处描述的错误似乎已部分修复,但仍可重现。现在,只有在使用其中一个模板(如空白文档)创建新文档之前,才会打开Word实例。
答案 0 :(得分:1)
那是一个错误。
根据MSDN:
我提供了一种引用执行代码的类的特定实例的方法。
对我来说,这意味着它应该始终是新文档。确保您不是偶然在模板中运行代码。
来源: https://msdn.microsoft.com/en-us/vba/language-reference-vba/articles/me-keyword