Функция createobject ВБА

Я застрял на этой строке кода с 10 января, где я получил его по электронной почте, и я узнал, что мне нужно изучить модули класса, поэтому я сделал и вернулся, чтобы спросить на новой основе. Строка кода (критическое предупреждение: вы должны перейти к инструментам--> ссылки в VBE и активировать службы Microsoft WinHTTP, версия 5.1 С ранним связыванием):

Dim WinHttpReq As Object

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

для CreateObject я иду в MS Help и говорю:создает и возвращает ссылку ActiveX объект

Теперь, насколько я знаю, когда мы создаем ссылку, это только для объекта и делается так (пожалуйста, поправьте меня, если я ошибаюсь):

Dim ThatIKnow as Workbook

тогда мы создаем его вот так

Set ThatIKnow = Workbooks.Add

зачем нам нужен CreateObject?

помогать продолжает, говоря:"...объекта ActiveX"

и если я пойду, чтобы нажать ActiveX на справку, он указывает на глоссарий, который говорит: объект, который подвергается воздействию других приложения или инструменты программирования через интерфейсы автоматизации

и эта строка абсолютно ничего мне не говорит. Все, что я знал о ActiveX это

enter image description here

...я считаю, элементы ActiveX... (Я должен признать, хотя ActiveX всегда был туманным термином для меня)

Теперь внутри CreateObject ("WinHttp.WinHttpRequest.5.1") Я просмотрел Интернет, и я не могу найти достойную помощь MS для объекта WinHttp и что так и есть. В любом случае браузер объектов имеет его как библиотеку, но кнопка справки F1 ничего не показывает. Таким образом, браузер объектов говорит, что это библиотека, я нашел ее в интернете под названием WinHttp Reference, а также как объект WinHttp. Что это из всего этого?

и ради любви к Богу, почему это называется"5.1"? я нигде не нашел WinHttpRequest.5.1 срок

Я не прошу разжевать пищу, но и любые попытки взломать ainigma действительно затягивает всю ситуацию еще больше. Пожалуйста, любой щипок, который может помочь мне взломать эту строку кода, будет тонами помощи

спасибо за просмотр моего вопроса

2 ответов


Я не буду покрывать разницу между раннее связывание и позднее связывание. Вы можете прочитать о них в этой KB статья

что я сделаю, однако, это ответить на все ваши маленькие вопросы, которые у вас есть в вашем вопросе, такие как

  1. что такое CreateObject?
  2. что такое элемент управления ActiveX?
  3. создает и возвращает ссылку на объект ActiveX - значение
  4. и ради любви к Богу, почему это называется "5.1"?

что такое CreateObject?


как я уже упоминал в комментарии выше CreateObject - это функция, которая используется в Visual Basic (vb6 и vb.net), Visual Basic для приложений (VBA) и VBScript для динамического создания экземпляра элемента управления ActiveX или COM-объекта.


что такое элемент управления ActiveX?


элемент управления ActiveX является компонентом программного объекта, который может повторно использоваться многочисленными прикладными программами. Основная технология создания элементов управления ActiveX на основе Component Object Model (COM). В общем случае элементы ActiveX заменяют более ранние OCX (связывание объектов и встраивание пользовательских элементов управления).

элемент управления ActiveX может быть создан на любом языке программирования, который распознает компонентную объектную модель Microsoft, например Visual Basic и C++

этот элемент управления ActiveX работает в так называемом контейнере, например MS Excel, который использует Программные интерфейсы объектной модели компонента. На самом деле это помогает нам всем. Представьте себе, писать код для этих элементов управления с нуля каждый раз!


создает и возвращает ссылку на объект ActiveX - значение


позвольте мне объяснить это в связи с тем, что вы процитировали.

Dim ThatIKnow as Workbook

Set ThatIKnow = Workbooks.Add

то, что мы делаем Dim ThatIKnow as Workbook сообщает среде выполнения, что мы создадим объект типа "Workbook" и ссылаться на него как "ThatIKnow" в нашем коде. Однако это фактически не создает объект и не выделяет никакой памяти. Память выделяется только тогда, когда объект создается с помощью New ключевое слово или любой другой способ, такой как Createobject и assiged этой переменной ThatIKnow

Итак, когда мы говорим Set ThatIKnow = Workbooks.Add или Set oXLApp = CreateObject("Excel.Application"), мы фактически создаем объект в памяти.


и ради любви к Богу, почему это называется "5.1"?


это из-за" Божьей любви " мы произошли от приматов, которые отличались от других млекопитающих. Итак, рассмотрим версию X этих млекопитающих: D

да, Панкадж Джаджу прав, когда он упомянул, что это номер версии. Какой теперь номер версии и почему это важно?

версия управления.к.источник управления.к.контроль ревизия в простых условиях ничего, но управление изменениями документов, заявок, сбор информации и т. д. Любые перемены обычно идентифицируется по номеру или буквенному коду или его сочетанию.

это полезно, Так как это позволит нам знать текущую версию этого документа или приложения.

для дальнейшего чтения по контролю версий см. ЭТА ССЫЛКА


надеюсь, я рассмотрел все ваши вопросы? Если нет, то не стесняйтесь спрашивать.


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

почти так же, как

Dim WinHttpReq As WinHttpRequest
Set WinHttpReq = New WinHttpRequest

разница в том, что при первом подходе вам не нужно включать библиотеку в список "ссылки", но в качестве цены вы не будете иметь подсказок intllisense в IDE, потому что ваша ссылка является общим объектом.

вторая форма является более предпочтительной. Это позволяет VB проверять типы объектов на совместимость при их настройке или передавать их в качестве параметров. Он также дает вам подсказки, какие методы и свойства имеет объект как вы вводите его имя.