vba - VBA CreateObject 与类型库引用
问题描述
我已经通过 ATL 构建了一个 COM 对象,以便在 VBA 中使用已编译的 C++。我的类型库是(比如说)“MyObjLib”,对象是“MyObj”。
如果我在 VBA 中使用对象浏览器,一切看起来都不错:它向我显示库为 MyObjLib,并且在其中我看到一个类 MyObj 作为库的成员。
如果在 VBA 中,我通过 References 菜单包含这个库,我可以这样写:
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 简单 COM 对象向导中将 ProgId 字段留空......这正是我所做的!因此,我从未为该课程注册 ProgId(因此在注册表中没有任何 HKCR 条目)。
我使用向导创建了另一个项目,这次输入 ProgID 并将新项目中 .rgs 文件中的语法复制到我现有的文件中。
嘿 presto, CreateObject() 现在可以正常工作了。
推荐阅读
- xslt - 如何在 xslt 或 xsl-fo 中按预期在 for 循环中进行排序(按字母顺序排列)?
- python - 为什么我在使用此 GCP App Engine 应用时没有收到 DeadlineExceededError?
- wget - 如何使用 wget 从默认服务器上下文根以外的位置获取文件?
- java - JavaFX - 每个设备的 POM、UI 和控制器
- vb.net - 如何在 VB.NET 中用 DataTable 列名填充 ComboBox?
- cmake - 如何在 CMAKEList 中执行外部批处理文件
- python-3.x - python - 如何在Python中的轴上投影某些值?
- spring - Spring Boot 2.1:WebMvcConfigurer#addFormatters(...) 中引发的异常未在 @RestControllerAdvice 中捕获
- java - 计算大多数元音java
- jquery - 来自动态创建的文本框的实时反馈