首页 > 范文大全 > 正文

红花还需绿叶衬Office插件之旅(2)

开篇:润墨网以专业的文秘视角,为您筛选了一篇红花还需绿叶衬Office插件之旅(2)范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

据调查,全球装机量仅次于操作系统的软件即office办公软件,其中又以微软Office系列所占的市场份额最大。微软Office提供了一套接口,让用户和第三方厂家可以通过编写插件的形式来扩展功能,帮助我们从重复的劳动中解放出来,做更有价值的事。大树底下好乘凉,所以Office插件的开发,也有着很好的前景。

对那些决定投入到Office插件开发的朋友们,我希望下面的入门教程能起一个抛砖引玉的作用。而要想写出真正专业化、受市场欢迎的商业插件,还需要不断学习和积累。下面我们就以微软Office系列办公套件为例,开始我们的“插件之旅”。

首先建议朋友们先花点时间掌握一些VBA、VB或者其他程序设计的相关知识,这有利于我们开发出更加专业的插件。再花点时间了解一下Office对象模型的相关结构、对象、属性、方法等。这些知识,在Office帮助文档中就有很详细的介绍,并且有不少代码示例。

有了这些知识准备,就可以开始开发自己的第一个Office插件了。微软Office平台的插件开发有三种方式:

(1)利用Office内置的宏语言VBA进行开发。

(2)利用VB6或者其他程序设计语言开发基于COM的Active DLL或者Active EXE。

(3)利用VSTO进行开发,这是一种新的开发技术,用它开发的插件可以脱离Office环境进行文档的建立和处理。

下面的插件例子,将用来实现在PowerPoint中给所选的对象重命名以及显示/隐藏对象,从而让繁杂、众多、无序的对象操作变得轻松而有序。

人物专访

朱建国,网名无极、pptaddins。从事程序设计10多年,2007年开始进入Office平台的开发,开发出了“PPT动画库扩展”等一大批应用于Office平台的插件,是这方面的专家。

CFan:不少人认为,Office插件没什么技术含量,不值得开发?

朱建国:这种想法在国内程序员中很普遍,极大地误导了一些年轻人,从而不愿意或不好意思从事Office平台开发。致使当前国内Office平台开发水平远落后于国外,我们还仅停留在个人爱好或手工作坊式的阶段。

CFan:这可能只是一部分原因,更重要的是不是因为没有“钱”途?

朱建国:Office应用不仅深深溶入个人生活,也渗透到企业或部门工作的每个角落,在这个凡事都讲究效率的时代,它事实上有着很大的市场需求。国外的Office插件开发已经成为商业软件开发的一个重要领域,并创造着每年数亿美元的财富,而这个数据正在以年均超过60%的增幅不断增加。所以,抛开无知的“傲慢和偏见”,抢得国内Office开发先机,谁就有可能因此成就一番美妙的事业。

【任务实战】

插件之旅轻松起步

在PowerPoint中制作幻灯片时,往往会有这样的困惑:当一张幻灯片中包含的对象太多,对象的操作将变得非常费时和无序,这时,或许非常希望能够给某些对象取个有意义的名字并且能够隐藏某些重叠在一起的对象,从而让我们在操作时能够快速地识别对象或操作所需对象。是的,对象重命名插件可以轻松地解决这个问题。下面就请跟我一起,来完成这个插件的开发。

第一步:启动PowerPoint 2003(本例同样适用于PowerPoint 2007/2010),建立一个PPT文档,然后按Alt+F11键打开VBA编程环境窗口。

第二步:点击菜单“插入类模块”新建一个类,并在左侧工程窗格的属性中,将类模块的名称由默认的“类1”改为“clsApp”。另外再插入一个模块,并改名为mdApp。双击进入clsApp类模块,再在右侧类模块窗口中输入下列代码(见图1)。同样方法,为mdApp也输入相应的代码,限于篇幅这里不再细述,大家可从/cfan/201007/NameTools.zip获取详细代码。

第三步:点击菜单“插入用户窗体”新建一个窗体,并将默认的UserForm1改合为“frmShow”。在左侧控件工具箱中点选相应工具,再在窗体上分别绘制1个ListBox控件、1个CheckBox控件、2个CommandButton按钮控件。要想修改窗体标题,比如改为“显示或隐藏对象”,可在窗体属性列表中找到Caption,直接修改它的值即可。同样,修改按钮上的显示文字,点选按钮对象后,再在属性列表中修改它的Caption属性值即可(见图2)。

接着在工程窗格中,右击窗体frmShow,选择“查看代码”,输入相应的代码即可。同样,限于篇幅,具体代码已打包在上述的下载文件中了。

第四步:回到PowerPoint主界面,点击菜单“文件另存为”,保存类型选择“PowerPoint 加载宏(*.ppa)”,保存后一个给对象重命名的插件就做好了。最后测试一下效果,在PowerPoint中,点击菜单“工具加载宏”,然后浏览至你刚才保存的文件就可以加载我们刚才编写的插件了(见图3)。

【高手进阶】Office插件编程更上一层楼

用VBA写插件虽然简单方便,但是它有几点不足:一是需要调整Office宏的安全性,有点麻烦;二是它的编译不是一种真正意义上的编译,很容易泄漏源代码;三是所受限制多。所以,我们在原来的基础上,用VB6改写上面的插件,让它成为真正意义上的Office插件。

从Office 2000开始支持一种新的统一的设计结构,这种结构用于生成应用程序外接程序以增强和控制Office应用程序。这些外接程序叫做COM外接程序。

COM外接程序是一种进程内COM服务器或ActiveX动态链接库(DLL),它实现如Microsoft外接程序设计器类型库(Msaddndr.dll)中所描述的IDTExensibility2接口。所有COM外接程序都从此接口继承而来,而且都必须实现其五个方法中的每一个方法。

下面我们就按步骤用VB6(当然也可以用其他的语言)来改写上面的对象重命名插件。

1.启动Microsoft Visual Basic 6.0,选择“外接程序”作为项目类型。

2.为连接打开设计器窗口,并从“应用程序”下拉列表中选择“Microsoft PowerPoint”。在“初始加载行为”下拉列表选择“Startup”,表示宿主应用程序启动时就加载插件。从项目中移除“frmAddin”。

3.从“项目”窗口中右击“Connect”项目,选择“查看代码”。然后把其中的所有代码删除,然后加入我们对上例进行改造后的代码(详细代码见上文提供的下载文件包中)。

4.插入一个窗体,用于操作“显示对象或隐藏对象”,其设计和代码与第二部分相似,不再列出,详细信息请看下载示例源代码。

5.编译源代码:保存该项目并创建NameTools.dll。设计器为你注册插件。其他代码与前面的代码基本相同,在此省略。详细代码信息,可以下载示例文件。

一个编程菜鸟的疑惑

火星的柳絮

为什么要用VB开发呢?

朱建国

多数的Office插件基本上都是用VB6开发的,因为VB与Office结合得更紧密一些。

火星的柳絮

VB6的版本,是不是有些低?会不会在Office2007或更新版本中,有些功能调用不了?

朱建国

这是入门的东西。程序设计语言与Office的版本没有任何关系,不会出现任何问题。其实,现在最好的插件开发语言还是VB6,虽然现在出现了,但是对于入门者来说,也许根本就看不懂。而且进行程序部署还有点深奥。目前,在国内,特别是学生,使用VB6的人数还是占大多数。大学的教材也是以VB6为基础的,所以不存在问题。选择哪种开发语言完全是爱好和熟悉的程序,与其他没有关系。