求助:c++如何调用word的查找功能
1个回答
展开全部
这是个比较典型的错误,在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);
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);
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询