6

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

Dim WinHttpReq As Object

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

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

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

Dim ThatIKnow as Workbook

然后我们像这样实例化它

Set ThatIKnow = Workbooks.Add

为什么我们需要 CreateObject?

帮助继续说“ ...的 ActiveX 对象

如果我点击帮助上的 ActiveX,它会指出词汇表上写着: 通过自动化接口向其他应用程序或编程工具公开的对象

这条线绝对没有告诉我什么。我所知道的关于 ActiveX 的只有这个

在此处输入图像描述

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

现在在 CreateObject( "WinHttp.WinHttpRequest.5.1" ) 中,我搜索了 Web,但我找不到一些关于 WinHttp 对象及其作用的体面的 MS 帮助。无论如何,对象浏览器将其作为库,但 F1 帮助按钮什么也没有显示。所以对象浏览器说它是一个库,我在 Web 中找到了它,称为 WinHttp 参考,也称为 WinHttp 对象。所有这些是什么?

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

我不是要咀嚼的食物,但任何破解 ainigma 的努力都会使整个局势更加紧张。请任何可以帮助我破解这行代码的夹子都会有帮助

感谢您观看我的问题

4

2 回答 2

16

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

但是,我要做的是回答您在问题中遇到的所有小问题,例如

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

什么是创建对象?


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


什么是 ActiveX 控件?


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

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

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


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


让我参考你引用的内容来解释它。

Dim ThatIKnow as Workbook

Set ThatIKnow = Workbooks.Add

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

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


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


正是因为“上帝的爱”,我们才从灵长类动物进化而来,而灵长类动物又与其他哺乳动物不同。所以考虑我们是那些哺乳动物的 X 版:D

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

简单来说,版本控制又名源代码控制又名修订控制只不过是对文档、应用程序、信息收集等更改的管理。任何新的更改通常由数字或字母代码或它们的组合来标识。

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

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


希望我已经涵盖了你所有的问题?如果没有,请随时询问。

于 2014-02-06T19:43:14.013 回答
1
Dim WinHttpReq As Object
Set WinHttpReq = CreateObject("WinHttp.WinHttpRequest.5.1")

几乎一样

Dim WinHttpReq As WinHttpRequest
Set WinHttpReq = New WinHttpRequest

不同之处在于,使用第一种方法,您不必将库包含在“参考”列表中,但作为代价,您将不会在 IDE 中获得智能提示,因为您的参考是通用对象。

第二种形式更可取。它允许 VB 在您分配对象类型或将它们作为参数传递时检查对象类型的兼容性。它还会在您键入对象名称时提示您对象具有哪些方法和属性。

于 2014-02-06T18:00:01.313 回答