微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

VBA CreateObject与类型库引用

如何解决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()现在可以正常工作了。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。