VBA CreateObject与类型库引用

问题描述

我已经通过ATL构建了一个COM对象,以便在VBA中使用已编译的C ++。我的类型库是(例如)“ MyObjLib”,而对象是“ MyObj”。

如果我在VBA中使用对象浏览器,则一切看起来都很好:它向我显示库为MyObjLib,在其中,我看到一个类MyObj作为该库的成员。

如果在VBA中,我通过“引用”菜单包含了该库,则可以编写:

Dim obj as MyObj
Set obj = new MyObj

,一切正常。但是,如果我尝试:

Dim obj as Object
Set obj = CreateObject("MyObjLib.MyObj")

它失败,并显示“运行时错误429:ActiveX组件无法创建对象。”

这很不幸,因为我现在想使用Python中的COM对象。有什么想法我想念的吗?

解决方法

感谢您的评论。我花了一些时间在C ++代码中搜索ProgId。然后我偶然发现了另一个SO答案,关于某个人在ATL Simple COM对象向导中将ProgId字段留空了……这正是我所做的!因此,我从未注册过该课程的ProgId(因此也没有在HKCR中注册该注册表项)。

我使用向导创建了另一个项目,这次输入一个ProgID,并将语法从新项目中的.rgs文件复制到我现有的项目中。

嘿,请问,CreateObject()现在可以正常工作了。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...