vc打开word2003文件,填写表格并退出

来源:互联网 发布:韩国釜林事件知乎 编辑:程序博客网 时间:2024/05/21 16:57

完整程序及word文件从下载:http://www.pudn.com/downloads407/sourcecode/windows/file/detail1734028.html

把111.doc拷贝到c盘目录下


1.创建一个基于对话框的程序,选择默认设置即可;


2. 添加新类:【查看】-> 【建立类向导】->【Add Class】-> 【From a type Library】,选择:C:\Program Files\Microsoft Office\OFFICE11\MSWORD.OLB文件(视office安装目录),在出现的类添加中,选择_Application, _Document, Documents,Selection四个类;环境会创建了文件msword.h,msword.cpp两个文件;


3. 在CTest1App::InitInstance()添加


if (!AfxOleInit()){return FALSE;}

4. 在对话框中添加一个按钮,双击,里面程序如下:


BeginWaitCursor();COleVariant vTrue((short)TRUE), vFalse((short)FALSE),vOpt((long)DISP_E_PARAMNOTFOUND, VT_ERROR);_Application m_App;//定义Word提供的应用程序对象;Documents m_Docs;//定义Word提供的文档对象;Selection m_Sel;//定义Word提供的选择对象;m_Docs.ReleaseDispatch();m_Sel.ReleaseDispatch();m_App.m_bAutoRelease=true;if(!m_App.CreateDispatch("Word.Application")){ AfxMessageBox("创建Word2003服务失败!"); exit(1); }//下面是定义VARIANT变量;COleVariant varFilePath("c:\\111.doc");//事先写好的表格文件COleVariant varstrNull("");COleVariant varZero((short)0);COleVariant varTrue(short(1),VT_BOOL);COleVariant varFalse(short(0),VT_BOOL);m_Docs.AttachDispatch(m_App.GetDocuments());//将Documents类对象m_Docs和Idispatch接口关联起来;m_Docs.Open(varFilePath,varFalse,varFalse,varFalse,varstrNull,varstrNull,varFalse,varstrNull,varstrNull,varTrue,varTrue,varTrue, vOpt, vOpt, vOpt, vOpt);//打开Word文档; m_Sel.AttachDispatch(m_App.GetSelection());//将Selection类对象m_Sel和Idispatch接口关联起来;m_Sel.MoveDown(COleVariant((short)4),COleVariant((short)1),COleVariant((short)0));m_Sel.MoveDown(COleVariant((short)5),COleVariant((short)1),COleVariant((short)0));m_Sel.TypeText("123456789");m_Sel.MoveRight(COleVariant((short)1),COleVariant((short)1),COleVariant((short)0));m_Sel.TypeText("李明");m_Sel.MoveRight(COleVariant((short)1),COleVariant((short)1),COleVariant((short)0));m_Sel.TypeText("25");m_Sel.MoveRight(COleVariant((short)1),COleVariant((short)1),COleVariant((short)0));m_Sel.TypeText("技术员");m_Sel.MoveRight(COleVariant((short)1),COleVariant((short)1),COleVariant((short)0));m_Sel.TypeText("本科");m_Sel.MoveRight(COleVariant((short)1),COleVariant((short)1),COleVariant((short)0));m_Sel.TypeText("上海市虹口区民主路315号");//save word file_Document oActiveDoc; oActiveDoc = m_App.GetActiveDocument(); oActiveDoc.SaveAs(COleVariant("c:\\填写后表格.doc"), COleVariant((short)0), vFalse, COleVariant(""), vTrue, COleVariant(""), vFalse, vFalse, vFalse, vFalse, vFalse,vOpt, vOpt, vOpt, vOpt, vOpt);m_Docs.ReleaseDispatch();//断开关联;m_Sel.ReleaseDispatch();//退出WORD m_App.Quit(vOpt, vOpt, vOpt); m_App.Quit(vOpt, vOpt, vOpt);m_App.ReleaseDispatch();EndWaitCursor();MessageBox("word表格填写完毕!","提示",MB_ICONEXCLAMATION);

上面中的 MoveDown程序是从word录制宏得来,

Sub Macro1()'' Macro1 Macro' 宏在 2011-12-17 由 微软中国 录制'    Selection.MoveDown Unit:=wdLine, Count:=2    Selection.MoveLeft Unit:=wdCharacter, Count:=2    Selection.TypeText Text:="12345"    Selection.MoveRight Unit:=wdCharacter, Count:=1    Selection.TypeText Text:="丽丽"    Selection.MoveRight Unit:=wdCell    Selection.TypeText Text:="122"    Selection.MoveRight Unit:=wdCell    Selection.TypeText Text:="艺术"    Selection.MoveRight Unit:=wdCell    Selection.TypeText Text:="无"    Selection.MoveRight Unit:=wdCell    Selection.TypeText Text:="上海市虹口区民主路315号"    ActiveDocument.SaveEnd Sub


其中常量值用调试器可以看到:

wdLine = 5;

wdCharacter = 1;

wdCell = 12;