精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>C/C++>>COM技术>>献丑一篇:VC调用WORD接口

主题:献丑一篇:VC调用WORD接口
发信人: galfordli()
整理人: wenbobo(2002-12-27 15:51:54), 站内信件
 
下面的函数演示了如何从VC中调用WORD接口,功能很简单,县新建了一个新文件
,然后对文件中的字符作替换。

要运行下面的代码,先要从MSWORD8.OLB中加入所需的类,然后就可以想些什么就
干什么了,每个类中的成员函数都是和VBA中的对应的,可以现在WORD中录制一个
宏,然后照着试试。

void CWord1Dlg::OnOK() 
{
_Application myApp;
Documents myDocs;
_Document myDoc;
Range myRange;
Find fndInDoc;
Replacement rpInDoc;

//产生WORD的对象
if(!myApp.CreateDispatch("Word.Application"))
{
TRACE("\nmyWord.CreateDispatch failed!!");
return;
}
myDocs=myApp.GetDocuments();
myDoc=myDocs.Open(COleVariant("c:\\test.doc"));
myRange=myDoc.GetContent();
fndInDoc=myRange.GetFind();

fndInDoc.ClearFormatting();
rpInDoc=fndInDoc.GetReplacement();
rpInDoc.ClearFormatting();

short wdReplaceAll=2;
short wdFindAsk=2;
short wdFindContinue=1;
BOOL bF=false;
BOOL bT=true;
COleVariant vFalse((short)FALSE),
vOpt((long)DISP_E_PARAMNOTFOUND, VT_ERROR);

/*fndInDoc.Execute(&COleVariant("国际"),&COleVariant((short)bF),
&COleVariant((short)bF),&COleVariant((short)bF),
&COleVariant((short)bF),&COleVariant((short)bF),
&COleVariant((short)bT),&COleVariant(wdFindAsk),
&COleVariant((short)bF),&COleVariant("Galford"),
&COleVariant(wdReplaceAll));*/

//这两句的功能是一样的,可以差异下Word VBA,
//如果有表明参数可选,就可以用vOpt代替
fndInDoc.Execute(&COleVariant("国际"),vOpt,vOpt,vOpt,vOpt,
vOpt,vOpt,vOpt,vOpt,&COleVariant("Galford"),
&COleVariant(wdReplaceAll));

myDoc.Save();
AfxMessageBox("OK");
myApp.Quit(vFalse, vOpt, vOpt);

myApp.ReleaseDispatch();

//CDialog::OnOK();
}

void CWord1Dlg::OnButton1() 
{
_Application myApp;
Documents myDocs;
_Document myDoc;

COleVariant vOpt(DISP_E_PARAMNOTFOUND, VT_ERROR);
if(!myApp.CreateDispatch("Word.Application", NULL))
{
TRACE("\nmyWord.CreateDispatch failed!!");
return;
}

myDocs = myApp.GetDocuments();
myDoc = myDocs.Add(vOpt, vOpt);

Range myRange= myDoc.Range(vOpt,vOpt);


myRange.SetText("国际标准化组织");


myDoc.SaveAs(COleVariant("C:\\test.doc"),vOpt,vOpt,vOpt,vOpt,vOpt,vOpt
,vOpt,vOpt,vOpt,vOpt);

myDoc.Close(COleVariant((short)false), vOpt, vOpt);
AfxMessageBox("OK");
myDoc.ReleaseDispatch();
myDoc.m_lpDispatch = NULL; 

}  

--
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.99.79.191]

[关闭][返回]