使用msword.olb操作word(1)


摘要:使用msword.olb操作word,实现两个word文件合并,将别一个word的插入到当前文件当中


在我们程序的入口添加COM组件的初始化:

if (CoInitialize(NULL) != 0)

{

        AfxMessageBox(“初始化COM支持库失败!”);

        exit(1);

}

在程序的退出释放资源处,加入退出时释放COM组件卸载等

{

CoUninitialize(); //来释放COM支持库。

}

这样我们就完成了对COM支持库的代码已经完成。

下面要从Office的安装目录中找到对VC操作Word文件的动态库,我使用的Office版本中是MSWORD.OLB这个也是动态库的形式,是微软公司主要的文件结果之一。

(和使用普通的COM组件一样)选择VC++的View菜单里面的ClassWizad命令,会弹出一个对话框;然后点击Add Class…按钮选择From a type library,会弹出一个打开对话框,从这里打开Office安装目录下…/Office11/MSWORD.OLB文件,从里面选择几个要用到的类:_Application, Documents, _Document, Selection, Bookmarks,Bookmark 点击OK按钮。会在程序中生成一个msword.h和msword.cpp文件,这些文件中包含了刚才我们选择的几个类的代码。

1、利用MSWORD.OLB产生的msword.h和msword.cpp两个类文件及书签实现在一doc文件中插入另一个word文件。

<span style="white-space:pre">	</span>_Application oWordApp;
	Documents	 oWordDocs;
	_Document	 oWordDoc;
	Selection	 oWordSel;
	Bookmarks	 oWordBkmks;
	Bookmark	 oWordBkmk;
	
	
	COleVariant vTrue((short)TRUE),vFalse((short)FALSE),vOpt((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
	
	//创建WORD实例
	if (!oWordApp.CreateDispatch(_T("Word.Application")))
	{
		AfxMessageBox(_T("Word CreateDispatch Failed!"));
		return ;
	}
	
	try
	{
		oWordApp.SetVisible(TRUE);
		oWordApp.Activate();
		oWordDocs = oWordApp.GetDocuments();
		
		CString strDoc = _T("C:\\Users\\Administrator\\Desktop\\EDB085E1A56D44978A241A84B0AF391D.doc");		
oWordDoc  = oWordDocs.Open(COleVariant(strDoc),vFalse,vFalse,vFalse,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt);

		oWordSel  = oWordApp.GetSelection();	//获得Selection实例				
		
		//方法一、
		CString sField = _T("正文内容");<span style="white-space:pre">	</span>//正文内容书签

		oWordSel.GoTo(COleVariant((short)-1),vOpt,vOpt,COleVariant(sField));<span style="font-family: Arial;">//定位正文内容书签</span><span style="white-space:pre">
</span>
		
		oWordDoc	= oWordApp.GetActiveDocument();
		oWordBkmks	= oWordDoc.GetBookmarks();
		oWordBkmks.SetDefaultSorting(-1);
		oWordBkmks.SetShowHidden(FALSE);
<span style="white-space:pre">		</span>//在定位的书签处的插入文件
<span style="white-space:pre">		</span>oWordSel.InsertFile(_T("C:\\Users\\Administrator\\Desktop\\kanq-C175F1A14DB0B24B548558835283315B01.doc"),vOpt,vTrue,vFalse,vFalse);

		//方法二、循环遍历书签容器,找到正文内容书签。
		//oWordBkmks  = oWordDoc.GetBookmarks();
		//for (long nCount = 0  ; nCount < oWordBkmks.GetCount() ; nCount++)
		//{
		//	oWordBkmk = oWordBkmks.Item(COleVariant((short)(nCount+1)));
		//	if (oWordBkmk.GetName().CompareNoCase(_T("正文内容")) == 0)
		//	{
		//		oWordSel.InsertFile(_T("D:\\My Documents\\表单.doc"),vOpt,vTrue,vFalse,vFalse);
		//	}
		//}		
		
		oWordDoc.Save();	
		
		oWordBkmks.ReleaseDispatch();
		oWordSel.ReleaseDispatch();		
		oWordDoc.Close(vOpt,vOpt,vOpt);
		oWordDoc.ReleaseDispatch();
		oWordDocs.ReleaseDispatch();
	}
	catch(...){}

	oWordApp.Quit(vOpt,vOpt,vOpt);	
	oWordApp.ReleaseDispatch();


你可能感兴趣的:(word,vc++,微软,bookmark)