VBA CreateObject

从1月10日起,我被困在了这个代码行,我在电子邮件中find了它,我发现我不得不学习上课模块,所以我现在要回来问一个新的基础。 代码行是(严重警告:您必须到VBE中的工具 – >引用并使用早期绑定激活Microsoft WinHTTP Services,版本5.1 ):

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

对于CreateObject我去MS帮助和说: 创build并返回一个ActiveX对象的引用

现在我知道,当我们创build一个引用时,它只是一个对象,并且是这样做的(请纠正我,如果我错了):

 Dim ThatIKnow as Workbook 

那么我们就像这样实例化它

 Set ThatIKnow = Workbooks.Add 

为什么我们需要CreateObject?

帮助继续说“ …一个ActiveX对象

如果我点击帮助上的ActiveX,它会指出这样的术语表: 通过自动化接口暴露给其他应用程序或编程工具的对象

而这条线绝对没有告诉我什么。 我所知道的ActiveX就是这个

在这里输入图像说明

…我认为是ActiveX控件…(我必须承认,虽然ActiveX对我来说一直是一个模糊的术语)

现在在CreateObject( “WinHttp.WinHttpRequest.5.1” )里面,我search了Web,并且找不到一些像WinHttp对象那样的MS帮助。 无论如何,对象浏览器将其作为库,但F1帮助button什么都没有显示。 所以对象浏览器说这是一个图书馆,我发现它在networking中称为WinHttp参考,也作为一个WinHttp对象。 这些是什么?

而为了上帝的爱,为什么叫做“ 5.1 ”? 我没有发现WinHttpRequest.5.1任何地方

我不是要求嚼碎食物,但是任何破坏阿尼格玛的努力都会使整个局面更加紧张。 请任何捏,可以帮助我破解这一行代码将帮助

感谢您收看我的问题

我不会介绍早期绑定和晚期绑定的区别。 你可以在这个知识库文章中阅读它们

然而我要做的是回答你在你的问题中所有的小问题

  1. 什么是CreateObject?
  2. 什么是ActiveX控件?
  3. 创build并返回一个ActiveX对象的引用 – 含义
  4. 而为了上帝的爱,为什么叫做“5.1”?

什么是CreateObject?


正如我在上面的评论中提到的, CreateObject是一个在Visual Basic(vb6和vb.net),Visual Basic for Applications(VBA)和VBScript中使用的函数,用于dynamic创buildActiveX控件或COM对象的实例。


什么是ActiveX控件?


ActiveX控件是一个可以被众多应用程序重用的组件程序对象。 基于Component Object Model (COM)创buildActiveX控件的主要技术。 通常,ActiveX控件取代了早期的OCX(对象链接和embedded自定义控件)。

一个ActiveX控件可以用任何可以识别Microsoft组件对象模型的编程语言来创build,例如Visual Basic和C ++

这些ActiveX控件运行在所谓的容器中,例如使用组件对象模型程序接口的MS Excel。 事实上,这实际上帮助我们所有人。 想象一下,每次从头开始编写这些控件的代码!


创build并返回一个ActiveX对象的引用 – 含义


让我来解释一下你引用的内容。

 Dim ThatIKnow as Workbook Set ThatIKnow = Workbooks.Add 

Dim ThatIKnow as Workbook所做的是告诉运行时环境,我们将创build一个types为“Workbook”的对象,并在我们的代码中将其引用为“ThatIKnow”。 然而,这实际上并没有创build对象,也没有分配任何内存。 只有在使用New关键字或任何其他方式(如Createobject)创build对象并分配给此variables时, ThatIKnow

所以,当我们说Set ThatIKnow = Workbooks.AddSet oXLApp = CreateObject("Excel.Application") ,我们实际上是在内存中创build对象。


而为了上帝的爱,为什么叫做“5.1”?


正因为“上帝的爱”,我们从与其他哺乳动物分离的灵长类演化而来。 所以考虑我们这些哺乳动物的X版本:D

是的,Pankaj Jaju是正确的,当他提到这是版本号。 现在什么是版本号,为什么它很重要?

版本控制又名源代码控制(简称为“版本控制”)只不过是对文档,应用程序,信息收集等的更改进行pipe理。任何新的更改通常都由数字或字母代码或其组合来标识。

这是有帮助的,因为它让我们知道该文档或应用程序的当前版本。

有关版本控制的进一步阅读,请参阅此链接


希望我已经涵盖了所有的问题? 如果不是的话,随时提问。

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

与…几乎相同

 Dim WinHttpReq As WinHttpRequest Set WinHttpReq = New WinHttpRequest 

与第一种方法不同的是,您不必将库包含在“参考”列表中,但作为付款的价格,在IDE中不会有intllisense提示,因为您的引用是通用对象。

第二种forms是可取的。 它允许VB检查对象types的兼容性,因为您可以将它们作为参数进行分类或传递。 它也给你提示当你键入它的名字时对象所具有的方法和属性。