11

我应该使用什么标准来决定是否像这样编写VBA代码:

设置xmlDocument=新建MSXML2.DOMDocument

或者像这样:

设置xmlDocument=CreateObject(“MSXML2.DOMDocument”)

?

1

3个答案

重置为默认值
12

只要变量不是对象类型

将xmlDocument标注为MSXML2.DOMDocument设置xmlDocument=CreateObject(“MSXML2.DOMDocument”)

与相同

将xmlDocument标注为MSXML2.DOMDocument设置xmlDocument=新建MSXML2.DOMDocument

两者都使用早期绑定。鉴于

将xmlDocument作为对象标注设置xmlDocument=CreateObject(“MSXML2.DOMDocument”)

使用后期绑定。请参阅MSDN在这里.

在创建外部提供的对象时,New操作符、将变量声明为New和使用CreateObject函数之间没有区别。

“新建”要求引用类型库。而CreateObject使用注册表。

CreateObject可用于在远程计算机上创建对象。

5

你应该一直使用

设置xmlDocument=CreateObject(“MSXML2.DOMDocument”)

这与约束性问题无关。只有声明确定绑定。

使用创建对象独占将更容易在早期绑定和晚期绑定之间切换,因为您只需更改声明行。

换句话说,如果你这样写:

Dim xmlDocument作为MSXML2.DOMDocument
设置xmlDocument=CreateObject(“MSXML2.DOMDocument”)

然后,要切换到后期绑定,只需将第一行(更改为作为对象).

如果你这样写:

Dim xmlDocument作为MSXML2.DOMDocument
设置xmlDocument=新建MSXML2.DOMDocument

然后,当您切换到后期绑定时,必须更改这两行。

2

对于前者,您需要在应用程序中引用类型库。它通常会使用早期绑定(假设您将变量声明为MSXML2.DOMDocument而不是Object,您可能会这样做),因此通常会更快,并为您提供智能感知支持。

后者可用于使用对象的ProgId创建对象的实例,而无需类型库。通常您将使用后期绑定。

通常,如果您有类型库,最好使用“As New”,并从早期绑定中受益。

1
  • Joe提到了一个重要的VB/VBA特性,我想强调一下。对于经验不足的VB/VVBA程序员来说,它的缺失可能是一个困惑的来源:Intellisense。仅供参考-这是一个下拉列表,有助于自动完成键入的代码。在同一个系统中有一个相关的特性:对象资源管理器。仅供参考-它位于视图菜单上,在VBA中通过F2键访问。如果没有早期绑定(使用“New”关键字),Intellisense和对象资源管理器都将无法工作。 评论 2017年7月24日13:26

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.