求助:c++如何调用word的查找功能

 我来答
硪丨暧恋
2017-04-22 · TA获得超过8980个赞
知道大有可为答主
回答量:5336
采纳率:93%
帮助的人:2178万
展开全部
这是个比较典型的错误,在VC中调用Word的功能时大都是先录制一段Word的宏,再“翻译”成VC的函数。但是Word的VBA中文字常量,像这里出现的wdFindContinue和wdReplaceAll,VC是不认的,必须用它们所表示的值传递给被调用的函数才能正常的工作。例子中的:

COleVariant Wrap(wdFindContinue);
COleVariant Replace(wdReplaceAll);
改成:
COleVariant Wrap((short)1); //wdFindContinue=1
COleVariant Replace((short)2); //wdReplaceAll=2

就对了。
类似于这样的常量,VBA里有很多,VC调用Word录制宏经常会出现,怎么能知道这此常量的值是多少呢?可以这样知道,在Word的宏里,加上下面语句:

MsgBox wdFindContinue
MsgBox wdReplaceAll

运行一下该宏就可以知道了。

上面的程序虽然能运行,但还有一个严重错误,Execute函数中的参数都是指针,所以这样调用是不对的:

fndInDoc.Execute(FindText, MatchCase, MatchWholeWord, MatchWildcards, MatchSoundsLike, MatchAllWordForms, Forward, Wrap, format, ReplaceWith, Replace, MatchKashida, MatchDiacritics, MatchAlefHamza, MatchControl);

应改成这样的形式:

fndInDoc.Execute(&FindText, &MatchCase, &MatchWholeWord, &MatchWildcards, &MatchSoundsLike, &MatchAllWordForms, &Forward, &Wrap, &format, &ReplaceWith, &Replace, &MatchKashida, &MatchDiacritics, &MatchAlefHamza, &MatchControl);
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式