当 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. 【9302】&&【a301】兔子繁殖

    Time Limit: 10 second Memory Limit: 2 MB 问题描述 有一种兔子,出生后一个月就可以长大,然后再过一个月一对长大的兔子就可以生育一对小兔子且以后每个月都能生育一对 ...

  2. DevCloud项目管理与Leangoo使用对比

    DevCloud(华为软件开发云)是集华为研发实践.前沿研发理念.先进研发工具为一体的研发云平台,面向开发者提供端到端的研发工具服务.项目管理是DevCloud服务之一,致力于为敏捷开发团队提供简单高 ...

  3. 不安装 oracle的客户,就可以使用pl/sql访问远程oracle 数据库的方法

    免安装Oracle客户端使用PL/SQL连接Oracle      大家都知道,用PL/SQL连接Oracle,是需要安装Oracle客户端软件的.有没要想过不安装Oracle客户端直接连接Oracl ...

  4. Java_压缩与解压工具类

    转载请注明出处:http://blog.csdn.net/y22222ly/article/details/52201675 zip压缩,解压 zip压缩与解压主要依靠java api的两个类: Zi ...

  5. 哪个项目管理工具好用到哭?JIRA VS 华为软件开发云

    一.产品介绍 JIRA是Atlassian公司出品的项目与事务跟踪工具,被广泛应用于缺陷跟踪.客户服务.需求收集.流程审批.任务跟踪.项目跟踪和敏捷管理等工作领域. 华为软件开发云 (DevCloud ...

  6. net平台的rabbitmq

    net平台的rabbitmq使用封装 前言 RabbitMq大家再熟悉不过,这篇文章主要整对rabbitmq学习后封装RabbitMQ.Client的一个分享.文章最后,我会把封装组件和demo奉上. ...

  7. Information centric network (icn) node based on switch and network process using the node

    The present invention relates to an apparatus for supporting information centric networking. An info ...

  8. Codeforces Round #248 (Div. 2) B称号 【数据结构:树状数组】

    主题链接:http://codeforces.com/contest/433/problem/B 题目大意:给n(1 ≤ n ≤ 105)个数据(1 ≤ vi ≤ 109),当中有m(1 ≤ m ≤  ...

  9. WPF 3D模型的一个扩展方法

    原文:WPF 3D模型的一个扩展方法 在WPF 3D中,我们常常需要改变一个ModelVisual3D对象的颜色. 先说说ModelVisual3D,本质上3D模型都是由一个个的三角形构成的,并且经过 ...

  10. python 教程 第十四章、 地址薄作业

    第十四章. 地址薄作业 #A Byte of Python #!/usr/bin/env python import cPickle import os #define the contacts fi ...