西西软件园多重安全检测下载网站、值得信赖的软件下载站!
软件
软件
文章
搜索

首页编程开发C#.NET → 基于VS 2005环境的MS office自动化开发之熟悉环境篇

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

前往专题相关软件相关文章发表评论 来源:Clever101时间:2010/4/3 23:50:24字体大小:A-A+

作者:佚名点击:902次评论:0次标签: VS2005

  • 类型:编程工具大小:1.43G语言:中文 评分:6.7
  • 标签:
立即下载

 进行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类了(注意是重新生成),尽管还有一些警告。

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

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

    vs2015
    (39)vs2015
    微软版本针对多个平台添加了新的开发工具,支持开发全平台通用应用程序,包括手机以及增强现实等。通过,开发人员还可以使用或等语言或技术开发和安卓平台应用。针对和服务器开发,你可以使用.技术以及,或语言。支持编写所有类型设备的软件,包括安卓和应用,都将大大提高你的开发效率。有几个特性非常有亮点,比如编辑器支持手势识别工具包增强工具和最新的模拟器。为了进一步丰富的功能,最近微软还宣布将三大游戏引擎集成进来。...更多>>
    Visual Studio
    (42)Visual Studio
    是什么学是学什么首先是一个软件集成开发环境编译编辑调试和。软件开发工具的灵魂微软基础类库模板类库其他的,如,,,..,简称或者.,是微软推出的一款编译器,将高级语言翻译为机器语言低级语言的程序。是一个功能强大的可视化软件开发工具。自年公司推出.后,随着其新版本的不断问世,已成为专业程序员进行软件开发的首选工具。虽然微软公司推出了..,但它的应用的很大的局限性,只适用于和.。所以实际中,更多的是以.为平台。.不...更多>>

    相关评论

    阅读本文后您有什么感想? 已有人给出评价!

    • 8 喜欢喜欢
    • 3 顶
    • 1 难过难过
    • 5 囧
    • 3 围观围观
    • 2 无聊无聊

    热门评论

    最新评论

    发表评论 查看所有评论(0)

    昵称:
    表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲
    字数: 0/500 (您的评论需要经过审核才能显示)