2010-12-02 52 views
1

我有一个调用C#COM DLL的excel vba模块。有时候,我会得到这种奇怪的行为,我希望有人能够解释。当我按照下面的步骤初始化一个COM对象时,通过VBA中的调试器,我得到的类型不匹配。VBA中奇怪的COM行为

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

现在我可以在VBA添加断点和表添加到厘米变量,看看类型不匹配我实例化。实际上,该类型是针对我尝试创建的对象内的一个属性...指向的对象明显是由我实例化的“aimd.CMAdaptor”对象创建的,我实际上并没有获取根对象I只指定孩子。

由于这是一个COM对象,我想知道如果我的更新可能使用了不匹配的regasm数据或者导致它在错误的地方寻找对象的奇怪东西,或者类似的东西。我不断重建它以进行调试,并将其添加到调用regasm作为构建操作的安装程序中。

想法?

回答

1

竟然是一个愚蠢的错误......我被复制,让您选择所看到的VBA侧类的名称属性...

[PROGID(“aimd.CMAdaptor” )]

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