2012-08-10 64 views
0

我試圖使用COM對象方式如下:方法列表

Dim l 
l = CreateObject("tst.Ax") 
Dim err As Long 
Dim st As ULong 

Try 

    l.AX_hdr(st, err) 

    Catch ex As Exception 
    MsgBox(ex.Message) 
End Try 

而且我有錯誤

TYPE_E_ELEMENTNOTFOUND 

的CreateObject工作正常,因爲這個COM對象時執行一些代碼初始化(顯示消息框)。對象應該有方法AX_hdr,但我不知道它爲什麼找不到它。還有什麼可能是錯的?是否有任何方法如何從COM對象中檢索功能列表?

+1

當您使用延遲綁定時,您需要具備良好的文檔以瞭解COM服務器實現了哪些方法和屬性。 COM不支持Reflection。聯繫組件的所有者或作者。 – 2012-08-10 14:07:02

回答

2

如果add a reference你的COM組件,您可以使用早期綁定實例化對象:

Dim l as new tst.Ax 

這樣您就可以智能感知所有的方法和組件的屬性,或者您可以按F2鍵做使用Object Browser進行搜索。

如果您願意,您可以隨時在以後的日期刪除該引用,但early binding is usually preferable。如果你有很好的理由,或者沒有其他選擇,我只會使用後期綁定。

+0

我已經將'tst.Ax'添加到引用中,並聲明'Dim l as new tst.Ax'。但是當我在'l'變量後面按下點時,我從5個方法中選擇了 - Equals,GetHashCode,GetType,ReferenceEquals,ToString'。這是相同的,如果我做聲明'Dim l as new nonExistingObject' – vico 2012-08-10 15:27:41

+0

'Dim l as new nonExistingObject' will not compile,so I do not know how you can see any methods for it!所以我的猜測是你沒有正確地聲明你的對象。使用對象瀏覽器和/或查閱組件的文檔。 – 2012-08-10 15:38:23