2014-02-06 42 views
6

自1月10日起,我在這條代碼行上擱淺,我在電子郵件中找到了它,並且發現我不得不學習上課模塊,因此我現在要返回並要求新的基礎。該行代碼是(嚴重警告:你必須去工具 - >在VBE參考,並激活微軟的WinHTTP服務,5.1版早期綁定):VBA CreateObject

Dim WinHttpReq As Object 

Set WinHttpReq = CreateObject("WinHttp.WinHttpRequest.5.1") 

對於創建對象,我去MS幫助並說:創建並返回一個ActiveX對象的引用現在

爲我所知道的,當我們創建一個引用它僅僅是爲了和這樣做的目的(請糾正我,如果我錯了):

Dim ThatIKnow as Workbook 

然後我們實例像這樣

Set ThatIKnow = Workbooks.Add 

爲什麼我們需要創建對象?

幫助繼續說「... ActiveX對象的」

如果我去點擊幫助ActiveX它指出說,詞彙表: 暴露給其他的對象應用程序或編程工具通過自動化接口

而這條線絕對不會告訴我什麼。我所知道的ActiveX是這個

enter image description here

...我認爲這是ActiveX控件...(我必須承認,雖然的ActiveX總是對我來說是雲裏霧裏的術語)

現在裏面的CreateObject(「WinHttp.WinHttpRequest.5.1」)我已經搜遍了Web,我無法找到一些體面的MS幫助WinHttp對象,它做了什麼。無論如何,對象瀏覽器有它作爲庫,但F1幫助按鈕什麼也沒有。所以對象瀏覽器說它是一個庫,我已經在網絡中找到它,稱爲WinHttp Reference,也是一個WinHttp對象。這些都是什麼?

而對於上帝的愛爲什麼它被稱爲「5.1」?我沒有發現任何地方的WinHttpRequest.5.1術語

我不是要求咀嚼食物,但任何努力破解ainigma真的收緊了整個情況。請任何捏,可以幫助我破解這行代碼會有所幫助色調,看着我的問題

感謝

+1

'5.1' - 我beleive是ActiveX對象 –

+0

的版本號你能解釋一下這行代碼呢?它提出了一個巨大的問題,以我理解它 – ExoticBirdsMerchant

+1

要undertsand如何早期和後期綁定的作品,看到這[知識庫文章(http://support.microsoft.com/kb/245115)據'CreateObject'而言,它是一個用於Visual Basic(vb6和vb.net),Visual Basic for Applications(VBA)和VBScript中的函數,用於動態創建ActiveX控件或COM對象的實例。 –

回答

14

我不會介紹早期綁定和後期綁定的區別。您可以在此KB Article

瞭解它們是什麼,我會做的不過是回答你把所有的小問題,你的問題,如

  1. 什麼是創建對象?
  2. 什麼是ActiveX控件?
  3. 創建並返回一個ActiveX對象的引用 - 含義
  4. 而爲了上帝的愛,爲什麼它被稱爲「5.1」?

什麼是創建對象?


正如我在上面CreateObject註釋中是被在Visual Basic中使用的函數(VB6和vb.net),Visual Basic應用程序(VBA)和VBScript來動態創建ActiveX的實例控制或COM對象。


什麼是ActiveX控件?


ActiveX控件是可重新使用由許多應用程序的組件程序對象。基於Component Object Model (COM)創建ActiveX控件的主要技術。通常,ActiveX控件取代了早期的OCX(對象鏈接和嵌入自定義控件)。

ActiveX控件可以在承認微軟的組件對象模型例如Visual Basic和C++

在所謂的容器這些ActiveX控件運行在任何編程語言創建,例如MS Excel中,它使用組件對象模型程序接口。事實上,這實際上幫助我們所有人。想象一下,每次從頭開始編寫這些控件的代碼!


創建並返回一個ActiveX對象的引用 - 意義


讓我解釋一下參考你引用什麼。

Dim ThatIKnow as Workbook 

Set ThatIKnow = Workbooks.Add 

我們通過Dim ThatIKnow as Workbook做的是告訴運行時環境,我們將創建的類型「工作簿」的對象,並引用它在我們的代碼「ThatIKnow」。但是,這實際上並不創建該對象,它也沒有分配任何內存。使用New關鍵字或任何其他方式如Createobject創建只有當對象和assiged這個變量ThatIKnow

所以,當我們說Set ThatIKnow = Workbooks.AddSet oXLApp = CreateObject("Excel.Application"),我們實際上是在內存中創建對象的內存分配。


爲上帝的愛爲什麼它被稱爲「5.1」?


這是因爲「上帝的愛」,我們從其他哺乳動物分歧靈長類進化。因此,考慮我們的X版本的哺乳動物:d

是,潘卡Jaju是正確的,他提到的是版本號。現在什麼是版本號,爲什麼它很重要?

版本控制a.k.a源代碼管理a.k.a簡單地說,修訂控制只不過是對文檔,應用程序,信息收集等的更改進行管理。任何新的更改通常都由數字或字母代碼或其組合來標識。

這是有幫助的,因爲它讓我們我們知道,文件或應用程序的當前版本。

有關版本控制進一步的閱讀可見THIS LINK


希望我已經把所有的問題嗎?如果不是,那麼隨時提問。

+2

*掌聲*另一個奇妙的答案。 –

+2

+1希望我有這個寫的時候我正在學習腳本...良好的工作@SiddharthRout –

+2

+1:因爲它總是很高興,以澄清一些混亂的一個新的傢伙。 – Manhattan

1
Dim WinHttpReq As Object 
Set WinHttpReq = CreateObject("WinHttp.WinHttpRequest.5.1") 

幾乎相同

Dim WinHttpReq As WinHttpRequest 
Set WinHttpReq = New WinHttpRequest 

不同的是,使用第一種方法時,您不必將庫包含在「參考」列表中,但作爲付款的價格,在IDE中不會有intllisense提示,因爲您的參考是通用對象。

第二種形式是優選的。它允許VB在您分配對象時將它們作爲參數來檢查對象類型的兼容性。它也給你提示當你鍵入它的名字時對象所具有的方法和屬性。