我正在对 VB6 应用程序进行一些小的更新。它在连接到 SQL Server 2000 数据库的 Windows 2000 服务器上运行。
我从服务器上获取了源代码的副本,进行了更新并在本地进行了编译。我的本地计算机运行的是 Windows 7 64x。我将 .exe 文件复制回服务器,当我尝试运行它时,收到运行时错误 49:Activex 组件无法创建对象。我知道当应用程序尝试使用 RDO 打开数据库连接时会发生此错误。
我可以从我的本地计算机和运行 Windows XP 的虚拟电脑上正常运行 .exe。
此应用程序之前在服务器上运行,我所做的更改是对其输出的文件内容进行的,因此不需要新的引用。
这些是它掉落的线条:
rdoEnvironments(0).CursorDriver = rdUseNone
Set conDB = rdoEnvironments(0).OpenConnection("MRA", rdDriverNoPrompt, True)
最佳答案
我最近解决了 Activex component can't create object
错误如下:
- 打开您的
.vbp
在文本编辑器中创建 VB6 项目的文件。 文件的顶部是项目使用的所有 activex 对象。就我而言,这些是:
Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\WINDOWS\system32\stdole2.tlb#OLE Automation Object={22D6F304-B0F6-11D0-94AB-0080C74C7E95}#1.0#0; msdxm.ocx Reference=*\G{3F4DACA7-160D-11D2-A8E9-00104B365C9F}#5.5#0#C:\WINDOWS\system32\vbscript.dll\3#Microsoft VBScript Regular Expressions 5.5 Reference=*\G{3D0758FA-4171-11D0-A747-00A0C91110C3}#a.0#0#C:\WINDOWS\system32\dbgwproc.dll#Debug Object for AddressOf Subclassing Object={248DD890-BB45-11CF-9ABC-0080C7E7B78D}#1.0#0; MSWINSCK.OCX Object={831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0; mscomctl.ocx Object={F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0; COMDLG32.OCX Object={3B7C8863-D78F-101B-B9B5-04021C009402}#1.2#0; RICHTX32.OCX
打开注册表应用程序。
- 导航至 HKEY_LOCAL_MACHINE\SOFTWARE\Classes
- Ctrl+F,然后搜索上面的每个类(class) ID,例如 {00020430-0000-0000-C000-000000000046}
- 期望找到
Reference=
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface 和Object=
中的条目HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID 中的条目 - 在每个条目之后,您会注意到有一个类似
#1.2
的版本。就我而言,我发现Version
中列出了相同的版本号。键在我在注册表中找到匹配项的位置附近。如果版本不匹配,可能需要注册正确版本的 OCX 或 DLL 文件。 - 找到每个条目后,您可以单击注册表树并点击向左箭头,直到返回
Classes
分支,然后搜索下一个条目。 - 最重要的是,如果您没有找到您搜索的类 ID 的条目,则很可能会导致
Activex component can't create object
错误。
就我而言,缺少的类是 Reference=*\G{3D0758FA-4171-11D0-A747-00A0C91110C3}#a.0#0#C:\WINDOWS\system32\dbgwproc.dll#Debug Object for AddressOf Subclassing
。这是在调试器中运行 VB6 应用程序时使用的特殊类,但不应与应用程序一起分发或在分发的应用程序中引用它。我通过打开 Project > <app name> Properties... > 'Make' tab
让 VB 停止引用 dbgwproc.dll并删除DEBUGWINDOWPROC = 1
来自Conditional Compilation Arguments:
。重建后,不再出现错误。
关于VB6 Activex组件无法创建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17302566/