標籤:
當 Office 使用者需要針對文檔自訂新功能時,可以求助於 VBA 或者 VSTO 兩種方式。Office 2013 富用戶端以後,微軟為 Office 平台上的開發人員提供了一種新模型 --- Office Add-In Model,它允許在 Office 應用程式中建立一片地區,並在這片地區中展現網頁與文檔的互動。開發人員可以將高度定製化的 Web 應用程式或服務整合在 Office 中,使之在整個 Office 平台上可用。 應用程式實際上並沒有安裝在運行 Office 的電腦上,而是託管在開發人員所指定的 Web 服務器上,因此,可以輕鬆地從該伺服器對它進行維護和更新。現在到處都是社交網路、行動裝置、各種各樣的雲端服務以及即時的文檔協作,新的模型正致力於將 Office 與 Web 技術和資源銜接起來。
對於開發人員而言,無論是 VBA、VSTO,還是新的 Office Add-In Model,只要可以解決實際問題,可以選擇任何一種方式實現。而如果要開發新的擴充功能,可以優先考慮 Office Add-In Model 實現,因為這種方式有其專屬的優勢。下面,我們逐一介紹三種開發模型的優劣,讓大家清楚什麼時候適宜選擇什麼樣的方案。
Office Add-In Model
【部署方式多樣化】使用這種方式開發的擴充功能,稱之為 Office Add-In, 微軟為這類 Add-In 提供了統一的發布商店 --- Microsoft Office Store。這可以最大化的減少不同公司、不同部門針對相似業務的重複投資,使所有的 Office 使用者在不同的 Office 平台( 主要有富用戶端、web版 Office、RT 版 Office等)使用優質的Office 自訂擴充功能。另外, Office Store 還允許開發人員對自己發布的Office Add-In收費,這無疑為優質的Add-In開發人員帶來了商機。另外,微軟還允許開發人員將開發的 Add-In 部署在本地共用資料夾中或者SharePoint App Catalog上,這樣只有區域網路或者本公司的人才可以在 Office 軟體中使用該Add-In。在發布和傳播上, 顯然新的Add-In Model走在了VBA、VSTO的前面。
【學習成本更低】開發Office Add-In,更多是利用現今流行的Web開發技術,對於開發人員(尤其是已經熟知Web 技術的從業人員)而言,學習和開發Office Add-In的成本也大大降低。開發人員甚至可以利用已經存在的web 服務或者網站快速構建出一個Office Add-In。
【維護和更新更加容易】基於 VBA 和 VSTO 的 擴充功能,它們運行在本地的 Office 軟體並依賴於相應的平台支援(如 VSTO 依賴於 Office 軟體提供的主要 Interop 組件,諸如Microsoft.Office.Interop.Excel.dll)。 然而當 Office 軟體或一些平台支援不一致時,會出現同一個指令碼或應用在不同的機器上表現不同,甚至是不支援。 新的 Add-In Model下開發的Add-In, 由於本質上是運行在 Office 平台(包括2013及以後的富用戶端,Web 版, RT版,甚至是 Mac版)上嵌入的的 iframe 中, 而 Add-In 本身是被開發人員 host 在遠端的 Web 服務器上。 Add-In 開發人員可以根據情況快速的更新 App 的功能或者修正 bug。
由於這個模型剛剛起步,在Office功能的自訂上稍顯不足,更多地強調可以在Office中銜接Web技術。
利用VSTO 構建Office擴充功能
VSTO(也就是Visual Studio Tools for Office) 是一套用於建立自訂Office應用程式的Visual Studio工具包。VSTO藉助於 .NET Framework去自訂和擴充 Office的功能。 VSTO 全面支援 C# 和Visual Basic 語言, 因此可以利用 .Net Framework 中常用的開發模型、工具和方法。VSTO 允許開發出的功能與Office 用戶端程式緊密整合,不管是在使用的 APIs 上還是針對使用者操作介面的自訂上。如所示的是一個PowerPoint 中的 VSTO solution,它實現了一個自訂的Ribbon(上側紅框)、基於 Windows Presentation Foundation實現的工作面板(右側紅框)和浮動的Windows Form視窗。
利用 VSTO 開發時,開發人員在 Visual Studio 中利用各種模板建立針對Excel/Outlook/InfoPath/Project/PowerPoint的擴充應用程式。利用模板建立新的 Office 項目後,Visual Studio 會添加對產生該項目所需的主要 Interop 組件(簡稱PIA) 的引用,比如說 Microsoft.Office.Interop.Excel.dll。 在某些情況下,你可能需要添加對其他 PIA 的引用(例如,如果你希望在 Microsoft Office Excel 項目中使用 Microsoft Office Word 的功能)。 MSDN 中列出了可用於 Office 2013 和 Office 2010 的 主要 Interop 組件。
當需要高度自訂Office功能或者針對Office 2007、2010及以下版本的富用戶端開發擴充功能時,VSTO將是最好的選擇。
基於VSTO的solution,其部署和更新依賴於各個企業的IT部門。另外,由於VSTO允許高度的自訂化,其運行需要和其他傳統型程式一樣的許可權,因此可以訪問檔案系統,或與其他軟體通訊,所以IT部門或者使用者個人需要自己衡量所要安裝的VSTO solution 是否安全可靠。
VBA
VBA 是用來自動化Office 用戶端軟體內操作的工具。由於這項技術植根於 Visual Basic 6, 並在 Word和Excel中提供了宏錄影(macro recorder)的支援, VBA 為自動化Office文檔內的任務提供了可能。 不過由於曆史久遠, VBA 更多的是提供UI上的自訂上和整體上對工具架構的支援。
VBA指令碼可以儲存分布在Office 文檔中,這使得指令碼的初次發布和傳播比較容易,但是當文檔通過郵件或其他方式廣泛的傳播和複製後,如果需要對指令碼變更,就會變得非常麻煩。另外,VBA指令碼可以做成應用程式層級的,不與特定的文檔相關,這時則需要每個使用它的使用者正確的安裝到特定的目錄下。
Office 取得巨大成功的一個重要原因就是 VBA,使用VBA可以完成很多事情,基於Excel、Word的VBA小程式不計其數。 VBA 的語言入門門檻較低,而這些使用者利用 VBA 解決的正式工作中關鍵問題。因此,VBA 程式大多作為部門內部或個人使用的小工具。
另外
為了防止使用過 VSTO 的開發人員將新的 Add-In Model 與 以前的 Office Add-In 概念混淆,下表列出了微軟官方對 Office 平台開發中涉及到概念的最新命名:
原名 |
新名稱 |
適用於 |
apps for Office |
Office Add-ins |
Office 2013 及 更新版本 ( 2013 app model) |
mail app for Outlook |
Outlook Add-in |
Office (VSTO) |
app for Excel |
Excel Add-in |
Office (VSTO) |
app for PowerPoint |
PowerPoint Add-in |
Office (VSTO) |
app for Word |
Word Add-in |
Office (VSTO) |
Office App Model |
Office Add-in Model |
Office (2013 app model) |
apps for SharePoint |
SharePoint Add-ins |
SharePoint (SharePoint 2013 app model) |
SharePoint App Model |
SharePoint Add-in Model |
SharePoint (SharePoint 2013 app model) |
app part |
add-in part |
SharePoint (SharePoint 2013 app model) |
app web |
add-in web |
SharePoint (SharePoint 2013 app model) |
相應地,在 Office Developer Tools for Visual Studio 中, 將分為以下幾類:
Type |
Description |
Example |
Office Web Add-ins |
Add-ins based on the web technologies provided by the new Office Add-in Model. 基於 Web 技術的 2013 app model |
Excel Web Add-in |
Office VSTO Add-ins |
Add-ins based on managed code technologies built with Visual Studio Tools for Office (VSTO). (VSTO) |
Excel 2013 VSTO Add-in |
Office COM Add-ins |
Add-ins based on COM and VBA technology that extend applications by adding custom commands and specialized features. |
Excel 2013 COM Add-in |
參考資料
Roadmap for Apps for Office, VSTO, and VBA -- http://blogs.msdn.com/b/officeapps/archive/2013/06/18/roadmap-for-apps-for-office-vsto-and-vba.aspx
Office 主要 Interop 組件 -- https://msdn.microsoft.com/zh-cn/library/15s06t57.aspx
New names for apps for Office and SharePoint --- https://msdn.microsoft.com/en-us/library/fp161507.aspx#bk_newname
如需轉載,請註明出處http://www.cnblogs.com/simpeng/p/4640850.html ,謝謝。
三種擴充 Office 軟體功能的開發模型對比 – Office Add-In Model, VBA 和 VSTO