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


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

Dim fso As New FileSystemObject

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

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

Как узнать, какую строку использовать для CreateObject? Например, как бы я знал, чтобы использовать " скриптинг."часть" сценария.Filesystemobject, с"? Куда вы идете, чтобы посмотреть, что вверх?

3 13

3 ответа:

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

HKEY_CLASSES_ROOT\Scripting.FileSystemObject

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

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

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

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

Используя IDE VB6, выберите Project, References, затем выберите ссылку "Microsoft Scripting Runtime".

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

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

Если вы не знаете имя ссылки или имя файла, но вы знаете имя класса, то вы можете искать в реестре "FileSystemObject", и вскоре должно быть обнаружено, что полное имя, которое вам требуется, - это " Scripting.Filesystemobject, с'.

Я бы начал с поиска FileSystemObject в библиотеке MSDN по адресу http://msdn.microsoft.com/library

Сайт битком набит документацией, включая сведения о том, как вызвать CreateObject.