2010-12-02 53 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」 )]

這是位於兩個不同的類。顯然,當你這樣做的時候沒有抱怨。我不知道爲什麼它選擇了一個,但更新不正確的屬性後,一切正常。