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

时间:2008-12-05 21:19:44

标签: vba vb6 late-binding createobject

我可以这样做:

Dim fso As New FileSystemObject

或者我可以这样做:

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

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

3 个答案:

答案 0 :(得分:24)

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

HKEY_CLASSES_ROOT\Scripting.FileSystemObject

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

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

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

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

答案 1 :(得分:2)

使用VB6 IDE,选择Project,References,然后选择引用'Microsoft Scripting Runtime'。

如果您不知道调用了什么引用,可以使用“引用”对话框的“浏览”按钮来选择文件/系统32 / scrrun.dll。

选择引用后,关闭“引用”对话框,然后打开“对象浏览器”(“视图”菜单)。将下拉列表更改为最可能的候选者,即“脚本”。这将揭示库的类,其中一个是'FileSystemObject'。因此,您将发现CreateObject所需的字符串是'Scripting.FileSystemObject'。

如果您不知道引用名称或文件名但是您知道了类名,那么您可以在注册表中搜索“FileSystemObject”,并且很快就会发现您需要的完全限定名称是“脚本” .FileSystemObject”。

答案 2 :(得分:1)

我首先在http://msdn.microsoft.com/library

的MSDN库中搜索FileSystemObject

该网站充满了文档,包括如何调用CreateObject的详细信息。