使用VC编程来操纵Office。你可以实现诸如:Word文件打印、传送数据到Word文档、发送E-MAIL、自动产生表格、Excel数据统计、圆饼图,直方图显示、自动报表生成、播放幻灯、doc,txt,HTML,rtf文件转换、中文简繁体转换、拼音或笔画排序......只要是Office能够实现的功能,都可以在你写的程序中调用。仔细阅读下面的说明,并下载源文件进行参考,你就可以一步一步地掌握这个技术。祝朋友们学习快乐。
一、概念
Microsoft 的 Office 产品中,都提供了OLE Automation 自动化程序的接口。如果你使用VB,VBA 和 Script 脚本调用 Office 功能的话,其实比使用 VC 调用要简单的多。比如在 WORD 中,调出菜单“工具(T)宏(M)录制新宏(R)”,这时候它开始记录你在 WORD 中任何菜单和键盘的操作,把你的操作过程保存起来,以便再次重复调用。而保存这些操作的记录,其实就是使用了 VBA 程序(Visual Basic for Application)。而我们下面要实现的功能,也同样要参考 VBA 的方法。
二、结构层次
为了更有逻辑,更有层次地操作 Office,Microsoft 把应用(Application)按逻辑功能划分为如下的树形结构
Application(WORD 为例,只列出一部分)
Documents(所有的文档)
Document(一个文档)
......
Templates(所有模板)
Template(一个模板)
......
Windows(所有窗口)
Window
Selection
View
Selection(编辑对象)
Font
Style
Range
......
......
只有了解了逻辑层次,我们才能正确的操纵 Office。举例来讲,如果给出一个VBScript语句是:
application.ActiveDocument.SaveAs "c:abc.doc"
那么,我们就知道了,这个操作的过程是:第一步,取得Application;第二步,从Application中取得ActiveDocument;第三步,调用 Document 的函数 SaveAs,参数是一个字符串型的文件名。
三、基本步骤
(1)创建(或打开已有的)一个 MFC 的程序工程
(2)Ctrl+W 执行 ClassWizard(本文按照 VC6 操作,例子程序也是在VC6 下编写测试的)
(3)Add Class...From a type Library... 在 Office 目录中,找到你想使用的类型库。(我使用的是 Office2000,其Word 的类型库文件,保存在 C:Program FilesMicrosoft OfficeOfficeMSWORD9.OLB)根据你 Office 的版本,可以使用下表列出的类型库文件
Office 版本和类型 | 类型库文件 | Office 版本和类型 | 类型库文件 |
Access 97 | Msacc8.olb | PowerPoint 2000 | Msppt9.olb |
Jet Database 3.5 | DAO350.dll | Word 2000 | Msword9.olb |
Binder 97 | Msbdr8.olb | Access 2002 | Msacc.olb |
Excel 97 | Excel8.olb | Excel 2002 | Excel.exe |
Graph 97 | Graph8.olb | Graph 2002 | Graph.exe |
Office 97 | Mso97.dll | Office 2002 | MSO.dll |
Outlook 97 | Msoutl97.olb | Outlook 2002 | MSOutl.olb |
PowerPoint 97 | Msppt8.olb | PowerPoint 2002 | MSPpt.olb |
Word 97 | Msword8.olb | Word 2002 | MSWord.olb |
Access 2000 | Msacc9.olb | Office Access 2003 | Msacc.olb |
Jet Database 3.51 | DAO360.dll | Office Excel 2003 | Excel.exe |
Binder 2000 | Msbdr9.olb | Graph 2003 | Graph.exe |
Excel 2000 | Excel9.olb | Office 2003 | MSO.dll |
Graph 2000 | Graph9.olb | Office Outlook 2003 | MSOutl.olb |
Office 2000 | Mso9.dll | Office PowerPoint 2003 | MSPpt.olb |
Outlook 2000 | Msoutl9.olb | Office Word 2003 | MSWord.olb |
(4)选择类型库文件后,在弹出的对话窗中继续选择要添加的类。具体选择什么类,要看你将来在程序中打算调用什么功能。当然,你也可以不用考虑这么多,用鼠标和Shift键配合,全部选择也可以。
(5)初始化COM。方法一,找到App的InitInstance()函数,在其中添加 AfxOleInit()函数的调用;方法二,在需要调用COM功能的地方 CoInitialize(NULL),调用完毕后 CoUninitialize()。
(6)在你需要调用 Office 功能函数的 cpp 文件中
#include // 为了方便操作 VARIANT 类型变量,使用CComVariant 模板类
#include "头文件.h"
// 具体的头文件名,是由装载类型库的文件名决定的。(鼠标双点包装类的文件,就可以看到)
// 比如使用 msword9.olb类型库,那么头文件是 msword9.h
(7)好了,现在开始写程序吧。另外要说明的是,步骤3和4,其实也可以使用 #import 方式引入类型库。
新闻热点
疑难解答