Вопрос о CreateObject() в VB6/VBA

Я могу сделать это:

Dim fso As New FileSystemObject

или я могу сделать это:

Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")

Как узнать, какую строку использовать для CreateObject? Например, откуда мне знать, как использовать «Сценарии». часть "Scripting.FileSystemObject"? Куда вы идете, чтобы посмотреть это?


person Shane Miskin    schedule 05.12.2008    source источник


Ответы (3)


Это ProgID компонента, зарегистрированного в реестре Windows под ключом HKCR:

HKEY_CLASSES_ROOT\Scripting.FileSystemObject

ProgID — это удобочитаемые идентификаторы COM-объектов. Они указывают на фактические идентификаторы CLSID, которые в данном случае:

HKEY_CLASSES_ROOT\CLSID\{0D43FE01-F093-11CF-8940-00A0C9054228}

Это место, где вы можете найти настоящую COM-библиотеку .dll, включающую реализацию компонента.

В первом примере кода, который вы предоставили, вы выполняете раннее связывание, а во втором — позднее связывание.

person huseyint    schedule 05.12.2008

Используя VB6 IDE, выберите «Проект», «Ссылки», затем выберите ссылку «Среда выполнения сценариев Microsoft».

Если вы не знали, как называется ссылка, вы можете использовать кнопку «Обзор» в диалоговом окне «Ссылки», чтобы выбрать файл /system 32/scrrun.dll.

Выбрав ссылку, закройте диалоговое окно «Ссылки», затем откройте «Обозреватель объектов» (меню «Вид»). Измените раскрывающийся список на наиболее вероятного кандидата — «Сценарии». Это покажет классы библиотеки, одним из которых является «FileSystemObject». Следовательно, вы обнаружите, что строка, необходимая для CreateObject, — «Scripting.FileSystemObject».

Если вы не знали имя ссылки или имя файла, но знали имя класса, вы можете выполнить поиск в реестре для «FileSystemObject», и вскоре должно быть обнаружено, что требуемое полное имя — «Scripting.FileSystemObject». .

person onedaywhen    schedule 09.12.2008