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

Posted

技术标签:

【中文标题】关于 VB6/VBA 中 CreateObject() 的问题【英文标题】:Question about CreateObject() in VB6 / VBA 【发布时间】:2008-12-05 21:19:43 【问题描述】:

我可以这样做:

Dim fso As New FileSystemObject

或者我可以这样做:

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

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

【问题讨论】:

【参考方案1】:

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

HKEY_CLASSES_ROOT\Scripting.FileSystemObject

ProgID 是 COM 对象的人类可读标识符。它们指向实际的 CLSID,在本例中为:

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

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

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

【讨论】:

【参考方案2】:

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

如果您不知道引用的名称,您可以使用“引用”对话框的“浏览”按钮选择文件 /system 32/scrrun.dll。

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

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

【讨论】:

【参考方案3】:

我将首先在 http://msdn.microsoft.com/library 的 MSDN 库中搜索 FileSystemObject

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

【讨论】:

以上是关于关于 VB6/VBA 中 CreateObject() 的问题的主要内容,如果未能解决你的问题,请参考以下文章

在VB6/VBA中使用正则表达式

VB6/VBA中跟踪鼠标移出窗体控件事件(类模块成员函数指针CHooker类应用)

是否有适用于 VB6/VBA 的 JSON 解析器?

关于 VBScript 中的 CreateObject

关于VB中CreateObject 函数

关于QTP报错“缺少对象WScript” Set WshShell=WScript.CreateObject ("WScript.Shell"),提示缺少对象