【问题标题】:Type mismatch when initializing a COM object初始化 COM 对象时类型不匹配
【发布时间】:2011-05-19 11:12:08
【问题描述】:

我有一个调用 C# COM dll 的 Excel VBA 模块。

有时,当我按如下方式初始化 COM 对象时,在 VBA 中单步调试调试器时会出现类型不匹配。

If (IsEmpty(cm)) Then
    Set cm = CreateObject("aimd.CMAdaptor")
End If

我可以在 VBA 中添加断点并向 cm 变量添加监视,然后查看类型与我实例化的不匹配。该类型适用于我要创建的对象内的属性。指向的对象显然是由我实例化的“aimd.CMAdaptor”对象创建的,我只是没有得到我指定的根对象,只有子对象。

由于这是一个 COM 对象,我想知道我的更新是否使用了不匹配的 regasm 数据或导致它在错误位置查找对象的东西。我不断重建它以进行调试,并将其添加到调用 regasm 作为构建操作的安装程序中。

【问题讨论】:

    标签: c# excel vba dll com


    【解决方案1】:

    原来是个愚蠢的错误...我正在复制允许您选择在 VBA 端看到的类名称的属性...

    [ProgId("aimd.CMAdaptor")]

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-31
      • 1970-01-01
      • 2012-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多