关于VB6/VBA中的CreateObject()的问题

Sha*_*kin 13 vb6 vba late-binding createobject

我可以做这个:

Dim fso As New FileSystemObject
Run Code Online (Sandbox Code Playgroud)

或者我可以这样做:

Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Run Code Online (Sandbox Code Playgroud)

我如何知道CreateObject使用什么字符串?例如,我怎么知道使用"脚本"."Scripting.FileSystemObject"的一部分?你去哪儿看?

hus*_*int 25

它是在HKCR密钥下的Windows注册表中注册的组件的ProgID:

HKEY_CLASSES_ROOT\Scripting.FileSystemObject
Run Code Online (Sandbox Code Playgroud)

ProgID是COM对象的人类可读标识符.它们指向实际的CLSID,在这种情况下是:

HKEY_CLASSES_ROOT\CLSID\{0D43FE01-F093-11CF-8940-00A0C9054228}
Run Code Online (Sandbox Code Playgroud)

在这里您可以找到包含组件实现的实际COM .dll.

在您提供的第一个示例代码中,您正在进行早期绑定,而在第二个示例代码中,您正在进行后期绑定.