使用New关键字和在Excel VBA中调用CreateObject有什么区别?

Mat*_*och 11 com excel binding vba excel-vba

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

Set xmlDocument = New MSXML2.DOMDocument
Run Code Online (Sandbox Code Playgroud)

或者像这样:

Set xmlDocument = CreateObject("MSXML2.DOMDocument")
Run Code Online (Sandbox Code Playgroud)

Mit*_*eat 11

只要变量不是作为对象键入的

Dim xmlDocument as MSXML2.DOMDocument
Set xmlDocument = CreateObject("MSXML2.DOMDocument")
Run Code Online (Sandbox Code Playgroud)

是相同的

Dim xmlDocument as MSXML2.DOMDocument
Set xmlDocument = New MSXML2.DOMDocument
Run Code Online (Sandbox Code Playgroud)

都使用早期绑定.而

Dim xmlDocument as Object
Set xmlDocument = CreateObject("MSXML2.DOMDocument")
Run Code Online (Sandbox Code Playgroud)

使用后期绑定.请在此处查看MSDN .

在创建外部提供的对象时,New运算符,声明变量As New和使用CreateObject函数之间没有区别.

New要求引用类型库.而CreateObject使用注册表.

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


Jim*_*ena 5

你应该经常使用

Set xmlDocument = CreateObject("MSXML2.DOMDocument")

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

CreateObject独占使用将使您更容易在早期绑定和后期绑定之间切换,因为您只需要更改声明行。

换句话说,如果您这样编写:

Dim xmlDocument As MSXML2.DOMDocument
Set xmlDocument = CreateObject("MSXML2.DOMDocument")

然后,要切换到后期绑定,只需更改第一行(As Object)。

如果您这样写:

Dim xmlDocument As MSXML2.DOMDocument
Set xmlDocument = New MSXML2.DOMDocument

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