一个类型库是一个提供COM对象功能信息的文件或文件的一部分,而且类型库包含了有关类的信息。注意,类型库并不存储实际的对象,而只是存储有关这些对象的信息。类型库详细说明了一个自动化客户机为对象需要调用的方法和属性的信息,比如说它详细的描述了接受或返回的值。
每一个Microsoft Office应用程序都在一个dll文件中提供了多种类型库资源,这种dll文件叫做目标库(*.olb),如word2003的目标库是msword.olb
The COleDispatchDriver Class
vc提供了一个COleDispatchDriver类来处理自动化对象的IDispatch接口,关于COleDispatchDrive类的属性和函数请读者自行查阅类库,这里就不再赘述。
1.创建一个新的Dialog-Base MFC AppWizard Exe工程名为"WordAutomation";注意在MFC AppWizard - Step 2 of 4中的Automaiton选项上打上勾
2.在View菜单中,点击ClassWizard,然后进入Automation标签中点击Add Class,选择From A Type Library。找到Microsoft Office 2003类型库msword.olb,选择_Application,_Document,_Documents,Selection四个类,如有其他需要(例如画表也可选择其他的类)。
这个过程会在工程中创建两个新的文件:msword.h和msword.cpp,这些文件构成了word类型库的所选择的类和类的成员函数。在ClassView视图中查看从word类型库生成的所有的类,然后双击_Application类来查看它的定义,你就会注意到_Application类是来源于COleDispatchDriver。
class _Application : public COleDispatchDriver
{
......
}
至于这些类和成员函数的功能和用法,我有一个简便的方法,那就是使用word中工具菜单中的宏的录制功能,把你所想要进行的操作先用宏录制下来,然后查看这些宏代码,你就会清楚要使用哪个类,哪些成员函数和成员函数应该带些什么参数了。虽然这些代码都是用VB写的,但你可以很容易的转换成VC++中的代码。
3. 剩下的就是如何使用了。
_Application oWordApp;
oWordApp.CreateDispatch("Word.Application", NULL)
如:创建一个新的文档
_Document oDoc;
oDocs = oWordApp.GetDocuments();
oDoc = oDocs.Add(vOpt, vOpt, vOpt, vOpt);
Selection oSel;
oSel = oWordApp.GetSelection();
oSel.TypeText("one");
如:保存文
oActiveDoc = oWordApp.GetActiveDocument();
oActiveDoc.SaveAs
COleVariant vTrue((short)TRUE),
vFalse((short)FALSE),
vOpt((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
//开始一个Microsoft Word实例
_Application oWordApp;
if (!oWordApp.CreateDispatch("Word.Application", NULL))
{
AfxMessageBox("CreateDispatch failed.", MB_OK | MB_SETFOREGROUND);
return;
}
//建立一个新的文档
Documents oDocs;
_Document oDoc;
oDocs = oWordApp.GetDocuments();
oDoc = oDocs.Add(vOpt, vOpt);
//给文档添加文本
Selection oSel;
oSel = oWordApp.GetSelection();
oSel.TypeText("one");
oSel.TypeParagraph();
oSel.TypeText("two");
oSel.TypeParagraph();
oSel.TypeText("three");
//保存文档
_Document oActiveDoc;
oActiveDoc = oWordApp.GetActiveDocument();
oActiveDoc.SaveAs(COleVariant("c://doc1.doc"),
COleVariant((short)0),
vFalse, COleVariant(""), vTrue, COleVariant(""),
vFalse, vFalse, vFalse, vFalse, vFalse);
//退出WORD
oWordApp.Quit(vOpt, vOpt, vOpt);
#include <atlbase.h>
{
AfxOleInit();
_Application app;
COleVariant vTrue((short)TRUE), vFalse((short)FALSE);
app.CreateDispatch(_T("Word.Application"));
app.SetVisible(FALSE);
Documents docs=app.GetDocuments();
CComVariant tpl(_T("")),Visble,DocType(0),NewTemplate(false);
docs.Add(&tpl,&NewTemplate,&DocType,&Visble);
Selection sel=app.GetSelection();
sel.TypeText(_T("/t/t/t/t/t第一次玩儿Word/r/n"));
sel.TypeText(_T("/t/t/t/t/t/t/t/t----------先来一个简单的/r/n"));
sel.ReleaseDispatch();
docs.ReleaseDispatch();
app.SetVisible(TRUE);
app.ReleaseDispatch();
相关推荐
利用VC实现Word预览功能
通过VC实现word文档预览功能,即仅让浏览,不让复制、编辑和保存。 总体思路是:先调用office的ole接口,将word文档转换为pdf;再利用swtools将pdf转换为swf;最后利用VC自带的activeX控件shockwaveflash object(flash.ocx)来播放swf。 转换的过程稍微有一点点延迟,最后的浏览效果还是可以的。
希望使用C、C++如何调用windows api来操作office组件,抽取数据和转换,不需要图形界面,不使用mfc下的类库
希望使用C、C++如何调用windows api来操作office组件,抽取数据和转换,不需要图形界面,不使用mfc下的类库
VC读写word文件(RTF文件)
这几天一直在研究VC读写有格式文本文件(RTF文件)的方法,终于动明白一些,下面是我的代码,在VS2005下运行正常,希望能帮助大家解决一点问题,若有书写不周,欢迎各位批评指正 。 void CVCreadwriteRTFDlg::OnBnClickedButton1() { // 变量的声明 COleVariant vTrue((short)TRUE),
在VC中调用WORD(显示,修改,存盘,运行宏)
(1)使用AppWizard创建一个新的MFC AppWizard(EXE)工程,命名为"office" (2)选择单文档视图(SDI)结构,在第3步中需要选中Container,以提供容器支持,并且选中active document container 其它都为默认(3)在View菜单中,选ClassWizard,选Automation选项卡,选Add Class,选择From a Typ
使用MFC操作EXCEL文件
一、加载 1、 在VC6.0里创建一个MFC工程 2、打开MFCClassWizard窗口(查看—>建立类向导),选择Automation,单击AddClass按钮,选择Froma type library...,弹出文件选择对话框,之后定位到C:\Program Files\MicrosoftOffice\OFFICE11\EXCEL.EXE,在生成类中添加所有的对象(其实添加需要的即可
VC之Office自动化开发(三)
二 EXCEL篇及命名空间说明
VC++中调用word
在实际应用中,编程者往往喜欢程序能自动生成word说明文档,说明程序运行的状况或运行的结果;或者程序能提取数据库的内容生成word表格,使用户能方便的查看和修改,打印。但是VC++中调用word的确不容易,特别是对word中各种函数的使用,本文以作者的工作经验详细介绍一下如何调用word和进行word表格的填写,有同样需求的编友也可查看一下MSDN中的Automation Microso
VC+++ 操作word
最近完成了一个使用VC++ 操作word生成扫描报告的功能,在这里将过程记录下来,开发环境为visual studio 2008 导入接口 首先在创建的MFC项目中引入word相关组件 右键点击 项目 --> 添加 --> 新类,在弹出的对话框中选择Typelib中的MFC类。 然后在弹出的对话框中选择文件,从文件中导入MSWORD.OLB组件。 这个文件的路径一般在C:\Pro...
VC利用WORD替换功能打印发票
VC利用WORD替换功能打印发票在用VC开发一项目时,需要打印发票。由于发票的种类比较多,而且有的是已经有文字,有的空白的,还有一部分文字是可变的,动态改变。如果用VC直接控制它的输出,是一件很烦人的事情,而且工作量巨大,因此考虑到office的word文字操作软件有杰出的文字操作功能,并且它有相关的VBA函数用于二次开发。在VC中当然也会提供相应的操作函数,只要电脑安装了word,只需要将其它导
VC 操作Word 2003的简单例子
实现这种功能通常的做法便是调用Office提供的COM操作。一般你要在的office安装目录下找到一个名为“MSWORD.OLB” 的库文件,2003的话一般是放在“C:/program files/office/OFFICE11”这个路径下。找到它以后,你可以将其拷贝到自己的工程目录下,也可以直接使用它的文件路径,这就关系到import里导入该库时的参数。在把代码拷贝到你的工作区以后,可以选
vc中操作WORD
使用VC编程来操纵Office。你可以实现诸如:Word文件打印、传送数据到Word文档、发送E-MAIL、自动产生表格、Excel数据统计、圆饼图,直方图显示、自动报表生成、播放幻灯、doc,txt,HTML,rtf文件转换、中文简繁体转换、拼音或笔画排序......只要是Office能够实现的功能,都可以在你写的程序中调用。仔细阅读下面的说明,并下载源文件进行参考,你就可以一步一步地掌握这个
学习用VC开发WORD插件
本文介绍了使用VC开发Word插件的关键技术,主要包括:1)通过实现_IDTExtensibility2和IRibbonExtensibility接口实现插件基本框架;2)采用两种方式响应Word事件(IDispEventSimpleImpl/IDispEventImpl和直接实现连接点接口);3)配置自动注册脚本确保插件加载。
在VC中调用WORD
在VC中调用WORD(1)使用AppWizard创建一个新的MFC AppWizard(EXE)工程,命名为"office" (2)选择单文档视图(SDI)结构,在第3步中需要选中Container,以提供容器支持,并且选中active document container 其它都为默认(
MFC VC 操作Excel,word的OLE对象
前几天老板分配了一个任务,背景是用户手动复制excel的一些统计表或者word中的组织结构图或者Visio中的流程图等,不能直接保持原格式粘贴到MFC的RichEdit控件中。用户只能手动把word,excel,visio中的图形以OLE对象的形式插入到一个新的word文件中,然后才能把这个OLE对象拷贝到RichEidt控件中。
【OFFICE自动化】如何用VC6.0绘制Excel和Word
如何使用VC6.0来写EXCEL和WORD文件呢?
VC操纵Word
转自 http://blog.csdn.net/wangji163163/archive/2009/07/02/4315358.aspx 最近有很多朋友问我,VC操纵Word的方法。需要的朋友请往下看。我们操纵Word需要通过类型库中的MFC类。而这些类,应该都是基于一个叫COleDispatchDriver的类。至少我所了解到的都是这样。COleDispatchDriver没有基
VC2008 操作调用 Word 控件
<br />原文地址:http://www.5xsoft.com/Article.aspx?id=239<br />现在在网上搜“VC操作word”的信息基本都是vc6的资料,vs2005以后的比较少了,按照老资料的步骤去做最后在编译时会报错的;<br />1.在VS2005中新建一控制台程序,选支持MFC <br /><br />2. Project-> Add Class->MFC Class From Typelib,单选File,找到你的word的类型库(例如我的word安装路径是"D://Prog
vc操作word的简单例子
void CMyDialog::OnBnClickedOk() { if(IDOK!=AfxMessageBox(_T("看好了,就要新建一个文档了"))) return; CApplication app; app.CreateDispatch(_T("Word.Application")); app.put_Visible(TRUE); CDo
vc6调用word打印
1. 打开classview, 选择Automation标签, 点Add Class并选择"From a type library" 浏览并选择你希望自动化的对象库.我要调用word2003, 选的是microsoft office/office11/msword.olb, 简单起见我选了里面所有的类,点ok,然后点ok关闭classview之后可以看到工程里多了msword.h和msword.c
2084




被折叠的 条评论
为什么被折叠?



