當 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 軟件提供的主互操作程序集,諸如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 會添加對生成該項目所需的主互操作程序集(簡稱PIA) 的引用,比如說 Microsoft.Office.Interop.Excel.dll。 在某些情況下,你可能需要添加對其他 PIA 的引用(例如,如果你希望在 Microsoft Office Excel 項目中使用 Microsoft Office Word 的功能)。 MSDN 中列出了可用於 Office 2013 和 Office 2010 的 主互操作程序集。
當需要高度自定義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 程序大多作為部門內部或個人使用的小工具。
另外
下表列出了微軟官方對 Office 平台開發中涉及到概念的最新命名:
原名 |
新名稱 |
適用於 |
apps for Office |
Office Add-ins |
Office 2013 及 更新版本 ( 2013 app model) |
mail app for Outlook |
Outlook Add-in |
Office (2013 app model) |
app for Excel |
Excel Add-in |
Office (2013 app model) |
app for PowerPoint |
PowerPoint Add-in |
Office (2013 app model) |
app for Word |
Word Add-in |
Office (2013 app model) |
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)
|
為了防止使用過 VSTO 的開發者將新的 Add-In Model 與 以前的 Office Add-In 概念混淆,在 Office Developer Tools for Visual Studio 中(也就是用於在 Visual Studio 中創建 Office 擴展程序的項目模板), 將老一代的基於 VSTO 實現的 Add-In 稱為 VSTO Add-In;把新的 Model 下的 Add-In 稱為 Web Add-In:
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 主互操作程序集 -- 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 ,謝謝。