作者:朱金灿
来源:http://blog.csdn.net/clever101/
进行MS office自动化开发最好的工具或许是VBA,但是很多时候我们的应用系统往往和MS office的文件打交道,比如生成word文件和EXCEL报表等等,因此学习一下主流的开发工具关于MS office自动化的知识还是很有必要的。从今天起,我将推出一些基于VS 2005环境的MS office自动化开发的一些入门文章。第一篇是关于熟悉开发环境。
这次我使用的是VS C++ 2005。经过一番折腾,我感觉VS C++ 2005对MS office自动化开发的支持还比不上VC 6.0。我这么说是有根据的,因为基于VC 6.0和基于VS 2005环境的MS office自动化开发我都做过。在VC 6.0,你只需要找到TpyeLib那个dll文件(或tlb文件、olb文件),选择你要用的类,然后VC 6.0为你自动生成.h文件和.cpp文件,这样你就可以直接使用其中定义的类了。
我原以为VS C++ 2005会沿用VC 6.0的做法。但我发现VS C++ 2005采用了新的做饭,这也倒没什么,问题严重的是这种新的方式居然对MS office自动化开发支持比较的糟糕(Word操作部分)。
进行MS office自动化开发,做法基本都是选择MS office的组件,然后导出你要使用的接口类,这在VC 6.0和VS C++ 2005都是一样。下面我以一个简单例子说明一下VS C++ 2005的具体做法,对应的ms office版本是office 2003。
首先用VS 2005新建一个单文档工程Owner,然后为工程添加一个类,选择"TypeLib中的MFC类",具体如下图:
单击"添加"按钮后出现下图,从下图我们看出VS 2005比VC 6.0的一点进步,这里多了一个导出来源:注册表。注册表的好处是名字直观,否则比如选择文件,你要操作word,你还要费一番心思去搜索操作word的类到底藏在哪个dll文件或olb文件、或tlb文件之中呢?
基于顾名思义的原则,我们在可用的类型库中选择Micro Word 11.0 Object Library<8.3>。这时出现一大堆接口类,我们也不知道该用哪个,干脆一古脑把它们全导入进来,具体如下图:
单击"完成"按钮后,你可以发现工程在一时之间出现了一大堆.h文件:CAddIn.h、CAddIns.h......你可能会疑惑,对应的cpp文件呢?对不起,VS 2005并没有为你生成。这时你或许感受到VS 2005和VC 6.0在office自动化开发的一点区别了吧。
既然一夜之间来了那么多新丁,先编译一下吧,OK,编译通过,这时你会说:VS 2005和VC 6.0的做法也不过大同小异罢了。先别那么早下结论,开始编码:
先编译一下,这时出现了一些你想象不到的编译错误:
1>f:\mytest\mytest\src\intdir\debug\owner\msword.tlh(1073) : error C2786: "BOOL (__stdcall *)(HDC,int,int,int,int)": __uuidof 的操作数无效
1>f:\mytest\mytest\src\intdir\debug\owner\msword.tlh(1073) : error C2923: "_com_IIID":"Rectangle"不是参数"_Interface"的有效模板类型变量
1> c:\program files\microsoft visual studio 8\vc\platformsdk\include\wingdi.h(3514) : 参见"Rectangle"的声明
1>f:\mytest\mytest\src\intdir\debug\owner\msword.tlh(1073) : error C3203: "_com_IIID": 未专用化的类模板不能用作模板变量,该变量属于模板参数"_IIID",应为real 类型
1>f:\mytest\mytest\src\intdir\debug\owner\msword.tlh(7113) : warning C4003: "ExitWindows"宏的实参不足
1>f:\mytest\mytest\src\intdir\debug\owner\msword.tlh(7113) : error C2059: 语法错误: "常量"
1>f:\mytest\mytest\src\intdir\debug\owner\msword.tlh(13448) : error C2146: 语法错误: 缺少";"(在标识符"Fonts"的前面)
1> f:\mytest\mytest\src\intdir\debug\owner\msword.tlh(13448) : error C4430: 缺少类型说明符- 假定为int。注意: C++ 不支持默认int
这时你可能会大呼:My God!这是怎么回事?抱歉,我也不知道为什么会出现这种问题。我初步估计为VS C++ 2005对MSWORD.olb这个组件支持得并不好,对其它一些组件可以支持。在这里我提供一个
解决方案。在CApplication.h中将系统自动生成的:
注释掉。然后添加如下代码:
这样做之后再选择"重新生成"重新编译整个工程就可以顺利使用CApplication类了(注意是重新生成),尽管还有一些警告。
另外在每次编译时不时出现下面这个讨厌的对话框:
我还没找到办法去掉这个对话框。
分享到:
相关推荐
Microsoft Office(简称MS Office)是微软公司开发的一套办公自动化软件,广泛应用于个人电脑、服务器以及云计算环境中,是目前世界上最流行和应用最广泛的办公软件之一。MS Office主要由以下几个部分组成: 1. ...
今天我们将深入探讨一个基于Node.js的库——node-msoffice,它允许开发者使用JavaScript来创建和解析Microsoft Office的文档,包括演示文稿、Word文档和Excel电子表格。 首先,我们要明确一点,node-msoffice是一个...
VBA是微软开发的一种编程语言,用于自动化Microsoft Office应用程序,如Excel、Word和Access,而SLR通常指的是单反相机技术,它在摄影领域具有广泛的应用。尽管这两个概念看似截然不同,但在这个参考手册中,它们...
【C#语言开发的OA模板框架源程序】是一种基于C#编程语言的开源框架,用于构建企业级的办公自动化(Office Automation,简称OA)系统。该框架专为开发者设计,旨在简化OA系统的开发过程,提高开发效率,并为用户提供...
用户通常依赖于老旧的MS-DOS批处理文件或使用第三方解决方案来实现自动化,但这些方法要么功能有限,要么不够简便且成本较高。 随着Microsoft Office中Visual Basic for Applications (VBA)的普及以及网页开发者对...
- 熟悉硬件设计,基于Protel DXP进行电路图绘制和PCB布局,参与开发了HA77双毫米舰炮自动控制系统电路板。 - 英语能力优秀,能够流利口语交流,在企业担任过专业英语文档翻译。(CET-4 80.5分,CET-6 479分,研究...
如果你是熟悉的MS Office,你是熟悉亿图迅速。 泛型图形格式的支持和所见即所得的打印。 新功能 UI是MS Office 2010风格一样。完整的功能区的功能。 新增主题,颜色主题,效果和字体。易改变整个图通过改变活动的...
9. **E-mail 在企业中的应用**:在企业环境中,集成E-mail功能可以帮助自动化工作流程,如自动发送通知、报告或订单确认,从而提高效率,减少人为错误。 通过上述知识点,我们可以了解到在VB和VFP应用中集成E-mail...
- **用户特征**:具有一定的计算机操作能力,熟悉IE浏览器、办公自动化软件等。 - **用户环境**:使用Windows XP简体中文版操作系统,配备IE浏览器、MS Office办公软件等。 #### 五、功能需求 1. **教学支持**:...
宏是基于Visual Basic for Applications (VBA) 的,这是一种编程语言,可以编写自定义的脚本来实现自动化任务。 在WPS Office中,宏功能可能默认是禁用的,特别是在安全设置较高的情况下。启用宏的步骤如下: 1. *...
- **用户环境**:基于Windows XP简体中文版操作系统,使用IE浏览器、MS Office办公软件以及Outlook或Foxmail等邮件管理工具。 - **功能性需求**: - **车辆管理**:包括车队信息的录入、修改、删除与查询,以及车辆...
### VBA教程概览 本教程旨在为初学者...通过以上章节的学习,您将获得VBA的基础知识,并能利用这些知识来开发实用的自动化脚本。无论是在日常工作中还是在解决特定的问题时,掌握VBA都将极大地提高您的效率和能力。
这个工具包允许Java开发者利用丰富的COM库,包括Microsoft Office套件中的功能,进行自动化处理或其他复杂的任务。Jacob项目的目标是提供一个简单、高效的方式来实现Java和COM之间的互操作性。 Jacob-1.18是该库的...
需要“Launching Quick Test Professional”来进一步地编辑和修改自动化测试脚本。 什么是BPT? 业务组件测试 用户参与、尽早测试: 基于角色和工作流的BPT模型 角色定义应该灵活、根据能力、时间资源等...
- **C++**: 基于C语言发展而来,支持面向对象编程,是现代软件开发的重要工具之一。 - **Java**: 面向对象的语言,跨平台特性使其在企业级应用开发中非常流行。 - **C#**: 微软推出的一种面向对象的编程语言,...
内部包含了atl控件的开发以及如何应用,演示了COM的包容与集合、自动化、事件和连接点、枚举器和集合以及线程管理等等。 ATL实现的CDHtmlDialog模板类v1.03 使用了六个类五个模块类演示了atl的调用方法 class ...
本项目旨在通过开发一个基于ASP技术和ACCESS数据库的在线人才招聘网站,为用户提供高效便捷的人才交流服务。 #### 二、关键技术介绍 ##### 1. ASP (Active Server Pages) ASP是一种服务器端脚本环境,可以在其中...
通过使用VBA(Visual Basic for Applications)宏,这个插件实现了与Microsoft Office的集成,宏是一种内置于Office应用程序中的编程语言,用于自动化任务和扩展功能。 **插件的工作原理** 1. **提取ODT文件**:...
1.6 Yisio 2000的独特之处 1.6.1 易于使用性 1.6.2 与微软紧密结合 1.6.3 更强大的功能 1.6.4 方便升级 1.7 小结 第2章 Visio 2000工程环境 2.1 操作Welcome to Visio 2000窗口 2.1.1 难备新...