Вопрос о CreateObject () в VB6 / VBA - PullRequest
13 голосов
/ 06 декабря 2008

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

Dim fso As New FileSystemObject

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

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

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

Ответы [ 3 ]

24 голосов
/ 06 декабря 2008

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

HKEY_CLASSES_ROOT\Scripting.FileSystemObject

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

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

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

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

2 голосов
/ 09 декабря 2008

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

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

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

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

1 голос
/ 06 декабря 2008

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

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

...