天天看點

.NET與VBA COM互操作

1:在vb.net側,做成相應的DLL工程

建立一個ClassLibrary工程,删除自動生成的Class1.vb檔案

然後自己新增加一個ComClass類型的項目

增加下面的函數

    Public Function NewGuid() As String

        Dim g As Guid = Guid.NewGuid()

        Return g.ToString()

    End Function

此時編譯生成的DLL檔案,在VBA的參照設定裡已經能看到了。

.net環境在預設情況下,自動注冊登陸了這個dll到GAC中。

檢視項目屬性,有兩個地方,一個是assemblyinfo中,COM參照被選中了。

還有一個地方是,編譯頁籤中,最下面COM互操作那一項也被選中了。

2:.net做成的COM元件如何部署

方法一:自己建立一個setup工程,然後把編譯生成的xxxx.DLL,xxxx.tlb兩個檔案添加到

setup工程,察看着兩個檔案的Register屬性。

xxxx.DLL對應vsdrpCOM值

xxxx.tlb對應vsdrfCOM值

這樣在客戶機上安裝後,vba也可以引用這個DLL檔案了。

方法二:在客戶機的.net類庫目錄中調用regasm指令注冊。可以用批處理來實作。

關于regasm的詳細用法可以參照

http://msdn.microsoft.com/zh-cn/library/tzat5yw6%28VS.80%29.aspx

例如:

C:/Windows/Microsoft.NET/Framework/v2.0.50727>regasm DLL絕對路徑 /tlb /codebase