2016-05-03 61 views
0

我有一個用VBA編寫的Excel插件,它可以遍歷表單的使用範圍並操縱單元格值。它是一個簡單的插件,但現在用戶需求已經改變,我想在Visual Studio中用C#開發它。爲此我正在研究VSTO,但就我在Visual Studio中可以理解的情況而言,您可以開發用於單個版本的Excel的插件。我必須爲excel 2010和excel 2013提供支持。我應該如何解決這個問題。哪個視覺工作室版本我應該使用?Visual Studio中的Excel 2010和Excel 2013的Excel Addin

回答

1

任何版本的Visual Studio從2010年到現在應該能夠創建VSTO加載項爲Excel 2010 。從VS 2012開始,也適用於Office 2013.您在更高版本中看到的哪組模板取決於1)安裝的Office版本和2)創建項目時選擇的.NET Framework版本(4.0 for 2010; 4.5以後)。更多信息可以在這個頁面找到:https://blogs.msdn.microsoft.com/vsto/2013/03/06/office-developer-tools-for-visual-studio-2012-now-available-with-office-2013-and-net-framework-4-5-support/

請注意,你應該只有一個版本的Office安裝在開發環境中。

如果可能,您應該開發Excel 2010外接程序。爲舊版本開發的外接程序將運行更新的版本,而無需另外進行任何操作 - 假設Microsoft未做出更改到你使用的將破壞它的對象模型的部分。由於Microsoft特別關注向後兼容性,這通常不是問題,但徹底的測試非常重要。沒有必要重新構建或以其他方式更改安裝以安裝到較新版本的Office。

針對舊版本開發的一個重要原因是轉發兼容性不受支持。換句話說,如果你應該使用較舊版本中不存在的東西,那麼代碼將失敗。

此外,VSTO功能會自動將對較舊版本PIA的引用重新映射到較新版本Office的新版本。反過來是不是的情況。

如果出於某種原因無法使用舊版本進行編程,只要您有.NET Framework 4.0(或更高版本),就可以使用Reference的「Embed Interop types」屬性來嵌入PIA信息在您的項目中,以便它與您的解決方案一起旅行,而不是參考安裝在GAC 中的PIA,使它們獨立於版本。理論上這很好,但需要非常徹底和認真的測試,因爲除了前向兼容性問題外,實際嵌入的信息並不總是正確的。

+0

謝謝你的詳細解答。 –

0

您需要安裝支持Excel 2013的VSTO版本13的Visual Studio 2013,但您可以通過從應用程序創建安裝程序文件來支持Excel 2010。並沒有其他的方式來支持從代碼庫的兩個不同版本同時

感謝

+0

你的意思是我必須從同一個項目爲Excel2010&2013創建兩個不同的安裝程序,或者我必須爲兩個Excel版本維護兩個不同的項目? –

+0

是的,你可以從同一個項目創建兩個不同的安裝程序 –