2008-09-24 28 views
0

我有Excel插件,我添加了很多類模塊,現在它非常笨重。我想將其轉換爲類型庫或COM包,以便我可以將其重用於MS Office套件中的其他應用程序。如何爲OLE自動化編寫類庫?

我將加載項作爲類庫項目移植到Visual Studio,但Excel自動化無法識別已編譯的.dll文件中的類。直覺上我想我需要一個清單,一個接口或類似的東西在我的代碼中。

爲了公開類的方法和屬性以用於OLE自動化,我需要知道些什麼?

回答

1

我假設,因爲你使用的短語清單,您使用的是.NET開發平臺VS2003,VS2005或VS2008組裝該DLL相比於VS 6.0

link提供一套詳細的要求步驟註冊.NET程序集以用作COM組件。

這篇文章沒有提到我經常做的一件事是創建我自己的GUID。使用「工具」菜單中的「創建GUID」項,然後將它們插入要暴露給COM的類,接口和枚舉的上方。

[Guid("3838ADC1-E901-4003-BD0C-A889A7CF25A1")] 
public interface IMyCOMClass { 
    void MyMethod(); 
} 

[Guid("476BDEB6-B933-4ed5-8B86-7D9330A59356"), 
ClassInterface(ClassInterfaceType.None)] 
public class MyCOMClass : IMyCOMClass { 
    public void MyMethod() { 
     //implementation here 
    } 
} 

我做的第二件事是爲類實現的COM部分使用單獨的接口。這樣做的原因與接口更改時COM的可破壞性有關,請考慮DLL Hell。

希望這會有所幫助, Bill。

1

(假設它是一個.NET項目)

而且具有的GUID添加到您的接口和類,您還需要將它們與標記有ComVisible特性屬性標記(除非你已經打上它的整機組裝) 。另外,您需要使用tlbexp.exe將元數據作爲COM類型庫導出,以便在非託管客戶端中引用。

相關問題