Функция createobject ВБА


Я застрял на этой кодовой строке с 10 января, когда я получил ее по электронной почте, и я узнал, что мне нужно было изучить модули класса, поэтому я сделал это и вернулся, чтобы спросить теперь на новой основе. Строка кода (критическое предупреждение: вы должны перейти к Tools-- > References в VBE и активировать Microsoft WinHTTP Services, version 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, это

Введите описание изображения здесь

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

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

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

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

Спасибо за ... наблюдая за моим вопросом

2 6

2 ответа:

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

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

  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-это компонентный программный объект, который может быть повторно использован многочисленными прикладными программами. Главный технология создания элементов 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" и будем ссылаться на него как на "Thatknow" в нашем коде. Однако это фактически не создает объект и не выделяет его память. Память выделяется только тогда, когда объект создается с помощью ключевого слова New или любым другим способом, таким как Createobject и ассимилируется с этой переменной ThatIKnow

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

И ради всего святого, почему он называется "5.1"?


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

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

Управление версиями A.k.управление версиями A.k. управление версиями в простых терминах - это не что иное, как управление изменениями в документах, приложениях, сбор информации и т. д. Любое новое изменение обычно идентифицируется по номеру или буквенному коду или их сочетанию.

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

Для дальнейшего чтения о контроле версий смотрите эту ссылку


Надеюсь, я ответил на все ваши вопросы? Если нет, то не стесняйтесь спрашивать.
Dim WinHttpReq As Object
Set WinHttpReq = CreateObject("WinHttp.WinHttpRequest.5.1")

Почти то же самое, что

Dim WinHttpReq As WinHttpRequest
Set WinHttpReq = New WinHttpRequest
Разница заключается в том, что при первом подходе вам не нужно включать библиотеку в список "ссылки", но в качестве платы вы не будете иметь подсказки intllisense в IDE, потому что ваша ссылка является универсальным объектом.

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