当 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 ,谢谢。

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

  1. Rails的三种环境----开发环境,生产环境和测试环境

    Rails 的三个环境 Rails 的应用程序预设提供了三种不同的执行模式: development environment 开发模式,用在你的开发的时候 test environment 测试模式, ...

  2. SQL join 三种扩展用法

    以前学习,只知道  LEFT JOIN.RIGHT JOIN.INNER JOIN.FULL  JOIN,共四种集合,然而加上一些条件,可以组合成另外三种集合,直接上图.

  3. octavia的实现与分析(一)·openstack负载均衡的现状与发展以及lvs,Nginx,Haproxy三种负载均衡机制的基本架构和对比

    [负载均衡] 大量用户发起请求的情况下,服务器负载过高,导致部分请求无法被响应或者及时响应. 负载均衡根据一定的算法将请求分发到不同的后端,保证所有的请求都可以被正常的下发并返回. [主流实现-LVS ...

  4. MySQL三种InnoDB、MyISAM和MEMORY存储引擎对比

    什么是存储引擎? MySQL中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平并且最终提供广泛的不同的功能和能力.通过选择不同的技术,你能 ...

  5. openstack octavia的实现与分析(一)openstack负载均衡的现状与发展以及lvs,Nginx,Haproxy三种负载均衡机制的基本架构和对比

    [负载均衡] 大量用户发起请求的情况下,服务器负载过高,导致部分请求无法被响应或者及时响应. 负载均衡根据一定的算法将请求分发到不同的后端,保证所有的请求都可以被正常的下发并返回. [主流实现-LVS ...

  6. K-means聚类算法的三种改进(K-means++,ISODATA,Kernel K-means)介绍与对比

      一.概述 在本篇文章中将对四种聚类算法(K-means,K-means++,ISODATA和Kernel K-means)进行详细介绍,并利用数据集来真实地反映这四种算法之间的区别. 首先需要明确 ...

  7. MVC路由 路由的三种扩展 替换MVC内置的Handler

    Global.asax 是 程序入口文件 路由配置   为什么localhost:8088/Home/Index/1 能返问到我们写的 会去掉前缀跟端口号  变成Home/Index/1 用这个跟路由 ...

  8. (转载)Nginx/LVS/HAProxy三种主流负载均衡软件的对比

    原地址:http://www.ha97.com/5646.html PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些 ...

  9. Entity Framework 5.0系列之EF概览-三种编程方式

    概述 在开发面向数据的软件时我们常常为了解决业务问题实体.关系和逻辑构建模型而费尽心机,ORM的产生为我们提供了一种优雅的解决方案.ADO.NET Entity Framework是.NET开发中一种 ...

随机推荐

  1. 实践-Task

    实践-Task 上篇博文中,我们介绍了Thread和ThreadPool: 多线程异步编程示例和实践-Thread和ThreadPool 本文中我们继续,说一下TPL(Task Parallel Li ...

  2. XMPP之安装mySQL--Mac OS(一)

    come from:http://www.cnblogs.com/xiaodao/archive/2013/04/04/2999426.html 一.安装 到MySQL官网上http://dev.my ...

  3. python2.x脚本转换为python3.x脚本的方法

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/dushu990/article/details/73549174 python2.x脚本转换为pyt ...

  4. 【codeforces 534B】Covered Path

    [题目链接]:http://codeforces.com/contest/534/problem/B [题意] 你在t秒内可以将车的速度任意增加减少绝对值不超过d; 然后要求在一开始车速为v1,t秒之 ...

  5. 【record】10.17..10.23

    .

  6. jeesuite分布式框架环境搭建

    一.简述 这是菜鸟走向开源的第一步.开源项目jeesuite:http://git.oschina.net/vakinge/jeesuite-libs jeesuite是托管在码云上的开源项目,是一个 ...

  7. Codeforces C. Pattern 412 解决问题的方法

    这个问题是比较暴力的法律主体. 主要是检查每一个是否没有使用足够的?.假设优先使用其他的无论是什么字母,假设你一定不能使用?. 找一个有能力并给予所有的字符串匹配字符串,而且采用的最小?号码. 原标题 ...

  8. WPF MeshGeometry3D

    说说 MeshGeometry3D 里 常用的 四个属性. 先看看 MSDN 的 简介 先说说 Positions,介绍说 是顶点位置的集合,什么意思,看张图片. 这张简单描述了一个三位坐标系,里面有 ...

  9. 1 DDD理论学习1 通用语言

    通用语言就是将事情描述清楚的语言 达到DDD的目标代码即设计,设计即代码.通俗的讲,也就是开发人员写的代码领域专家也能看懂. ddd模式跟传统模式的一个区别在于 传统先创建数据库表 再根据表创建类.而 ...

  10. 去除WPF中3D图形的锯齿

    原文:去除WPF中3D图形的锯齿 理论上讲PC在计算3D图形的时候是无法避免不出现锯齿的,因为3D图形都是又若干个三角形组成,如果3D图形想平滑就必须建立多个三角形,你可以想象一下正5边形和正100边 ...