初始化COM对象时键入不匹配

时间:2010-12-02 23:16:08

标签: c# excel vba dll com

我有一个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作为构建操作调用的安装程序。

1 个答案:

答案 0 :(得分:1)

原来是一个愚蠢的错误......我正在复制允许你选择VBA那边的类名的属性......

[PROGID( “aimd.CMAdaptor”)]

这位于两个不同的班级。显然,当你这样做时没有抱怨。我不确定为什么它选择了另一个,但在更新了错误的属性后,一切正常。