2016-12-13 66 views
0

如何在Excel(VBA)中使用我的C#項目時它是可執行形式?爲COM Interop添加一個.NET EXE作爲VBA參考(在Excel中)

在Visual Studio中,如果我轉到我的項目設置並將「輸出類型」更改爲「類庫」,則可以在Excel VBA中成功添加對我的項目的引用(通過瀏覽到引用中的DLL部分)。

然而,當我的「輸出類型」設置爲「Windows應用程序」,如果我嘗試添加引用(Excel的VBA內)到新生成的EXE文件,我收到以下錯誤:

Can't add a reference to the specified file

如何在Excel VBA中引用我的.NET EXE?

(我使用的EXE,而不是一個DLL的目的是爲了讓我的應用程序可以同時作爲一個Windows應用程序,並作爲一個COM對象)不知道確切的細節

回答

2

我只是想,一個DLL導出Excel所需的功能。 EXE通常不會導出任何函數。

關於.NET的好處是您可以輕鬆創建模塊化應用程序。那麼爲什麼不把核心功能放到DLL中並創建一個可以使用該功能的應用程序呢?

通過這種方式,您可以使用VBA中的DLL,並且仍然可以使用獨立應用程序。

+0

感謝您的回答。我不確定是否[這個人是正確的](http://stackoverflow.com/questions/7054481/how-to-produce-a-mix-of-dll-and-exe-in-one-c-sharp -project-in-visual-studio-or-o/7055824#7055824)但他聲稱_you可以引用一個.net可執行文件,就好像它是一個dll一樣,_如果可能,我寧願不部署2個單獨的項目。如果我只發出一個exe文件,它會更清潔。 – user966893

+0

你**可以**添加任何.NET **程序集**作爲任何其他** .NET項目**的參考,這是真的。 .NET不關心它是否是一個帶有.exe或.dll或.blurb擴展名的程序集,只要它是一個.NET程序集。但這與在Excel VBA中使用.NET DLL有很大不同! –

+0

明白了。我似乎記得VBA可以引用一個VB6 EXE,但是可能類似的東西不可能與.NET <=> VBA通​​信。 在.NET項目屬性的** Assembly Information **中實際上有一個選項,它允許您設置「Make assembly COM-Visible」。這個選項也爲Windows應用程序啓用,但也許它只適用於DLL。 – user966893