我有一个Excel VBA模块调用C#COM dll。
有时,当我在VBA中逐步执行调试器时,当我按如下方式初始化COM对象时,我得到类型不匹配。
If (IsEmpty(cm)) Then
Set cm = CreateObject("aimd.CMAdaptor")
End If
我可以在VBA中添加断点并向cm变量添加监视,并查看该类型与我实例化的类型不匹配。该类型是我正在尝试创建的对象内的属性。指向的对象显然是由我实例化的“aimd.CMAdaptor”对象创建的,我只是没有得到我指定的根对象,只有子对象。
由于这是一个COM对象,我想知道我的更新是否可能使用不匹配的regasm数据或导致它在错误的位置查找对象的东西。我不断重建它以进行调试,并将其添加到将regasm作为构建操作调用的安装程序。
答案 0 :(得分:1)
原来是一个愚蠢的错误......我正在复制允许你选择VBA那边的类名的属性......
[PROGID( “aimd.CMAdaptor”)]
这位于两个不同的班级。显然,当你这样做时没有抱怨。我不确定为什么它选择了另一个,但在更新了错误的属性后,一切正常。