2008-10-04 42 views

回答

10

只要變量沒有類型爲對象

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

相同

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

都使用早期綁定。而

Dim xmlDocument as Object 
Set xmlDocument = CreateObject("MSXML2.DOMDocument") 

使用後期綁定。請參閱MSDN here

在創建外部提供的對象時,New運算符,聲明變量As New和使用CreateObject函數沒有區別。

新要求引用類型庫。而CreateObject使用註冊表。

CreateObject可用於在遠程機器上創建對象。

2

對於前者,您需要在應用程序中引用類型庫。它通常會使用早期綁定(假設你將變量聲明爲MSXML2.DOMDocument而不是Object,你可能會這麼做),所以通常會更快,並且會給你提供intellisense支持。

後者可用於使用其ProgId創建對象的實例,而不需要類型庫。通常你會使用後期綁定。

如果您有類型庫,並且從早期綁定中受益,通常最好使用「新建」。

+0

喬提到一個重要的VB/VBA功能的功能,我想強調。對於缺乏經驗的VB/VBA程序員來說,這種缺席可能會造成混淆:Intellisense。僅供參考 - 這是幫助自動完成代碼輸入的下拉列表。有一個相關的功能,它的根源在同一個系統中:對象資源管理器。 FYI-在視圖菜單上,在VBA中可通過F2按鍵進行訪問。如果沒有早期綁定(使用'New'關鍵字),則Intellisense和Object Explorer都不會起作用。 – spinjector 2017-07-24 13:26:39

3

你應該總是使用

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

然後當你切換到後期綁定,你必須改變都行。

相關問題