Me关键字的行为不一致

18

我注意到在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 实例(如空白文档)才会发生此问题。

这些文档有什么区别?这似乎是一个需要向开发人员(例如微软)询问的问题,或者可能在SuperUser上提问? - JustinJDavies
区别在于一个文档有一个按钮,而另一个没有。如果这与语言设计有关,那么这里是正确的提问地点。但我担心这只是一个错误,或者使用ActiveX控件时未记录的副作用。 - Diego Queiroz
我的意思是,相对于“如果您从这些模板中创建新文件,您会发现结果不同”,有什么区别?您已经说明了按钮在模板中的不同之处。 - JustinJDavies
我的错。我编辑了问题以澄清。由相同代码生成的文档中产生的字符串是不同的,因为“Me”似乎指向不同的对象。 - Diego Queiroz
截至2016年6月,我无法在Word 2013下使用我自己创建的文件复现此问题。 - ThunderFrame
@ThunderFrame 你说得对,这里描述的问题似乎部分修复了,但仍然可能会出现。如果在打开文件时没有打开Word实例,则它们会像预期的那样呈现相同的行为。但是,如果在创建模板之前已经打开了Word实例(例如空白文档),它们的行为会有所不同。我刚刚在Office 365上进行了测试。 - Diego Queiroz
1个回答

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接