2012-09-26 42 views
2

Excel/VBA廣泛用於我工作的組織中。爲了使事情變得更容易,我正在開發一些可廣泛使用的.NET類/在VBA中使用VS2010。創建一個COM類能夠爲每個使用VB.NET循環

但是我似乎無法實現支持每個循環的COM對象。這種行爲如何實施?

要指定位:

在許多情況下,我會創建一些類(可以稱之爲SomeClass的),並伴隨專門的集合類(可以稱之爲SomeClassCollection)。在純.NET中,這通常是不必要的,因爲我可以簡單地爲通用容器(例如List(Of SomeClass))創建必要的專用擴展。在VBA/COM中,我需要爲大多數自定義類創建一個單獨的專用集合類。

對我來說,創建SomeClassCollection COM兼容對象的最明顯的方法是繼承一些通用的.NET集合,例如,列表(的SomeClass),然後創建添加專業功能,以及使基本功能和屬性COM可見(例如添加,刪除,計數等)

因爲我繼承了一個.NET集合,其中每個支持在.NET中)我以爲有可能以某種方式將此功能轉移到COM集合類(參見Excel中支持每種功能的工作表,工作簿等集合)。

回答

3

一般情況下,你需要實現它公開了一個方法與簽名IEnumerator GetEnumerator()一個COM可見的類,並與-4 DISPID(這是DISPID_NEWENUM)標記它

這是explained in more details here