作者:朱金灿
来源: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的做法也不过大同小异罢了。先别那么早下结论,开始编码:

#include "CApplication.h" CApplication app;

先编译一下,这时出现了一些你想象不到的编译错误:

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中将系统自动生成的:

#import "C://Program Files//Microsoft Office//OFFICE11//MSWORD.OLB" no_namespace

注释掉。然后添加如下代码:

#import "C:/Program Files/Common Files/Microsoft Shared/Office11/MSO.DLL" #import "c:/Program Files/Common Files/Microsoft Shared/VBA/VBA6/VBE6EXT.olb" #import "c:/Program Files/Microsoft Office/Office11/MSWORD.olb" / rename("ExitWindows","_ExitWindows") #import "c:/Program Files/Microsoft Office/Office11/EXCEL.exe" /rename("DialogBox","_DialogBox") /rename("RGB","_RGB") /exclude("IFont","IPicture")

这样做之后再选择"重新生成"重新编译整个工程就可以顺利使用CApplication类了(注意是重新生成),尽管还有一些警告。

另外在每次编译时不时出现下面这个讨厌的对话框:

我还没找到办法去掉这个对话框。

基于VS 2005环境的MS office自动化开发之熟悉环境篇相关推荐

  1. HetComputeSDK开发环境建立(2)之DSP开发和运行环境建立

    大家好,今天小白给大家介绍下如何建立DSP应用开发和运行环境,欢迎一起学习交流,关于CPU和GPU运行环境建立详见上一篇:https://blog.csdn.net/weixin_38498942/a ...

  2. 基于webpack的PC端和mobile端开发以及生产环境的搭建

    我们用webpack做单页面应用开发应该尝试过很多次了,如果在同一个项目需要支持PC端和移动端,做成多页面应用,开发时能根据请求的终端返回不同的内容,应该怎么做呢?以下描述的是我尝试的一种方案,并且以 ...

  3. 计算机一级考试操作题未来教育,2019年计算机一级考试MS Office操作试题002

    2019年计算机一级考试MS Office操作试题002 浏览次数:     时间:2019/07/26 Windows基本操作题,不限制操作的方式 注意:下面出现的所有文件都必须保存在考生文件夹下. ...

  4. 计算机二级office应用,全国计算机二级MS OFFICE题库软件推出-全国二级MS考点

    视频因为讲解的很详细,所以大一些,题库放不下,视频可以整体下载,也可以单个下载,以下是本软件配套的详细的视频讲解下载网址,有任何问题请联系QQ56769398: 备用:如果有新的题目会在此处出现,请常 ...

  5. 未来教育计算机一级试题,2019年计算机一级考试MS Office操作试题016

    2019年计算机一级考试MS Office操作试题016 浏览次数:     时间:2019/08/16 Windows基本操作题,不限制操作的方式 注意:下面出现的所有文件都必须保存在考生文件夹下. ...

  6. 未来教育官网计算机一级考试题,2019年计算机一级考试MS Office操作试题021

    2019年计算机一级考试MS Office操作试题021 浏览次数:     时间:2019/08/26 Windows基本操作题,不限制操作的方式 注意:下面出现的所有文件都必须保存在考生文件夹下. ...

  7. 基于富芮坤的FR801 BLE芯片开发

    基于富芮坤的FR801 BLE芯片开发 前言:本篇主要讲解如何利用官方的SDK和ble 协议栈知识开发所需的功能 注意:因为官方是每个工程都导入同一个底层-所以一旦修改了components ,全部工 ...

  8. 构建一个基本的前端自动化开发环境 —— 基于 Gulp 的前端集成解决方案(四)

    构建一个基本的前端自动化开发环境 -- 基于 Gulp 的前端集成解决方案(四) 参考文章: (1)构建一个基本的前端自动化开发环境 -- 基于 Gulp 的前端集成解决方案(四) (2)https: ...

  9. 西安计算机二级12月,2017年12月计算机二级MS Office习题答案(一)

    2017年12月计算机等级考试即将开始!出国留学网为考生们整理了2017年12月计算机二级MS Office习题答案,希望能帮到大家,想了解更多资讯,请关注我们,我们会第一时间更新. 2017年12月 ...

最新文章

  1. 高考大数据:哪个省才是高考地狱模式?结论和想象不太一样
  2. CENTOS 7 nginx-1.6.2 下载 解压 安装
  3. 曾经迷茫的起点,多年后终于明白了(续)
  4. Python学习day02_数字类型 与 布尔类型 短路逻辑和运算符优先级
  5. 春节档电影降价了 最低30元
  6. ac3168无线网卡驱动下载_计算机基础:网卡
  7. 好久没更新了,更新一篇,关于ZEC的吧
  8. Google账号注册失败 无法向手机发验证码
  9. 作为互联网+项目负责人的一些感悟
  10. java变量小明扑克牌_Java模拟扑克牌洗牌实现生成52张扑克的方法示例
  11. 苹果显示未找到服务器,苹果浏览器找不到服务器是怎么回事
  12. 【4月比赛合集】19场可报名的「创新应用」和「程序设计」大奖赛,任君挑选!
  13. fluid mask 3_CSS3 Fluid Layout和Media Queries:一种响应式Web设计的简单方法
  14. vue中,应用mapbox地图——地图组件mapbox-gl和语言包@mapbox/mapbox-gl-language地图英文转中文 accesstokens-访问令牌移动端地图-leaflet
  15. 索尼在线商城的商品是不是很多?
  16. html实现好看的照片墙
  17. LCD液晶显示屏工作原理
  18. oppo修改无线网服务器,简单小修改,你的OPPO手机wifi信号会马上提升
  19. 怎么查计算机硬件配置,怎么查看电脑硬件配置详细信息|韩博士一键检测电脑配置...
  20. 测人品,看是否满足条件

热门文章

  1. 7个Web前端极其精美的动画效果模板
  2. 039分数计算器程序
  3. 帝特dt 5001/5002/5003驱动
  4. go语言的魔幻旅程17-strconv包
  5. Java操作Word模板产生全新内容Word
  6. 2009中国互联网哈哈榜之十大事件
  7. 星辰天合参加首届数字驱动创新峰会 强调以 SDS 加速数据基础设施建设
  8. nginx转发导致400错误
  9. 从UCSC下载基因组的GTF文件
  10. 【报告分享】中国音乐市场年度综合分析2021-易观智库(附下载)