VBA CreateObject

Exo*_*ant 6 excel vba excel-vba createobject

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

Dim WinHttpReq As Object

Set WinHttpReq = CreateObject("WinHttp.WinHttpRequest.5.1")
Run Code Online (Sandbox Code Playgroud)

对于CreateObject,我转到MS帮助并说:创建并返回ActiveX对象的引用

现在,据我所知,当我们创建一个引用时,它仅用于一个对象,并且这样做(如果我错了,请纠正我):

Dim ThatIKnow as Workbook
Run Code Online (Sandbox Code Playgroud)

然后我们像这样实例化它

Set ThatIKnow = Workbooks.Add
Run Code Online (Sandbox Code Playgroud)

为什么我们需要CreateObject?

继续说" ActiveX对象的... "

如果我在帮助上单击ActiveX,它会指出一个词汇表: 通过Automation接口向其他应用程序或编程工具公开的对象

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

在此输入图像描述

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

现在在CreateObject("WinHttp.WinHttpRequest.5.1")中,我已经搜索了Web,我找不到一些体面的MS帮助WinHttp对象及其功能.无论如何,对象浏览器将它作为库,但F1帮助按钮不显示任何内容.所以对象浏览器说它是一个库,我在Web上找到它,称为WinHttp Reference,也作为WinHttp对象.什么是这些?

为了上帝的爱,为什么它被称为" 5.1 "?我没有找到WinHttpRequest.5.1术语的任何地方

我不是要求咀嚼食物,但是任何打破aininma的努力都会使整个局势更加紧张.请任何可以帮助我破解这一行代码的捏都会有帮助

谢谢你看我的问题

Sid*_*out 16

我不会介绍Early Binding和Late Binding之间的区别.您可以在此知识库文章中了解它们

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

  1. 什么是CreateObject?
  2. 什么是ActiveX控件?
  3. 创建并返回ActiveX对象的引用 - 含义
  4. 为了上帝的爱,为什么它被称为"5.1"?

什么是CreateObject?


正如我在上面的注释中提到的,CreateObject是一个在Visual Basic(vb6和vb.net),Visual Basic for Applications(VBA)和VBScript中使用的函数,用于动态创建ActiveX控件或COM对象的实例.


什么是ActiveX控件?


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

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

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


创建并返回ActiveX对象的引用 - 含义


让我参照你引用的内容解释一下.

Dim ThatIKnow as Workbook

Set ThatIKnow = Workbooks.Add
Run Code Online (Sandbox Code Playgroud)

我们正在做的Dim ThatIKnow as Workbook是告诉运行时环境我们将创建一个"Workbook"类型的对象,并在我们的代码中将其引用为"ThatIKnow".然而,这实际上并没有创建对象,也没有分配任何内存.只有在使用New关键字或任何其他方式创建对象时才会分配内存,例如Createobject并绑定到此变量ThatIKnow

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


为了上帝的爱,为什么它被称为"5.1"?


正是因为"上帝之爱",我们才从与其他哺乳动物不同的灵长类动物进化而来.因此,请考虑我们这些哺乳动物的X版本:D

是的,当Pankaj Jaju提到它是版本号时,他是对的.现在什么是版本号,为什么它很重要?

版本控制又名源代码控制又简称修改控制只是管理对文档,应用程序,信息集合等的更改.任何新的更改通常由数字或字母代码或其组合来标识.

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

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


希望我已经涵盖了你所有的问题?如果没有,那么随便问.

  • *掌声*另一个奇妙的答案. (2认同)
  • +1我希望我在学习脚本时写这篇文章...好工作@SiddharthRout (2认同)
  • +1:因为为一个新人清除一些混乱总是很好的. (2认同)
  • +1作为通常很棒的解释:) (2认同)
  • +1无法用更简单的语言更好地解释它. (2认同)