三种扩展 Office 软件功能的开发模型对比 – Office Add-In Model, VBA 和 VSTO

时间:2022-04-20 20:36:32

当 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窗口。

三种扩展 Office 软件功能的开发模型对比 – Office Add-In Model, VBA 和 VSTO

利用 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 ,谢谢。