DELPHI控制Word进行文档内容替换,就差一步,来人~ ( 积分: 20 )

  • 主题发起人 主题发起人 kisssun
  • 开始时间 开始时间
K

kisssun

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在的代码只能实现替换一个字符串,但是就是不能替换相同的多个字符串。例如我的文档里有两个wm,我都要用edt_TotalMonths.text的值来替换掉,结果只有一个wm被替换,为啥?代码:
var
MyWord:Variant;
FindText, MatchCase, MatchWholeWord, MatchWildcards, MatchSoundsLike,
MatchAllWordForms, Forward, Wrap, Format, ReplaceWith, Replace: OleVariant;
.....
MyWord.Visible := true;
MatchCase := False;
MatchWholeWord := True;
MatchWildcards := False;
MatchSoundsLike := False;
MatchAllWordForms := False;
Forward := True;
Format := False;
Replace := True;
FindText :='wm'; //修改月合计数
ReplaceWith :=edt_totalmonths.Text ;//使用edit内的内容进行替换
MyWord.ActiveDocument.Range.Find.Execute
( FindText, MatchCase, MatchWholeWord,MatchWildcards, MatchSoundsLike,
MatchAllWordForms, Forward, , Format, ReplaceWith, Replace );
 
我现在的代码只能实现替换一个字符串,但是就是不能替换相同的多个字符串。例如我的文档里有两个wm,我都要用edt_TotalMonths.text的值来替换掉,结果只有一个wm被替换,为啥?代码:
var
MyWord:Variant;
FindText, MatchCase, MatchWholeWord, MatchWildcards, MatchSoundsLike,
MatchAllWordForms, Forward, Wrap, Format, ReplaceWith, Replace: OleVariant;
.....
MyWord.Visible := true;
MatchCase := False;
MatchWholeWord := True;
MatchWildcards := False;
MatchSoundsLike := False;
MatchAllWordForms := False;
Forward := True;
Format := False;
Replace := True;
FindText :='wm'; //修改月合计数
ReplaceWith :=edt_totalmonths.Text ;//使用edit内的内容进行替换
MyWord.ActiveDocument.Range.Find.Execute
( FindText, MatchCase, MatchWholeWord,MatchWildcards, MatchSoundsLike,
MatchAllWordForms, Forward, , Format, ReplaceWith, Replace );
 
没人自己顶
 
kisssun:
能不能贴出你写得代码啊,我急用,主要是WordAppliciation.Doctuments.open,save,
或者联系我QQ:8701892。先谢谢了。
 
主要是Replace变量的设置问题.
Replace变量可以指定执行替换的个数:一个、全部或者不替换。可取下列 WdReplace 常量之一:
wdReplaceAll 全部替换
wdReplaceNone 不替换
wdReplaceOne 替换一个
 
再笨一点的办法就是在文档中设两个不同的名,用两次替换就可以了.
 
同意楼上的方法,加一句,引用下Word200.pas,Replace:= wdReplaceAll;
 
请大虾赐教:怎样获取某个字符串在文章中出现的次数?
 
我有现成的函数:USES Word2000,ComObj
procedure RStr(var WordApp: Variant; const OStr, NStr: String);
begin
WordApp.Selection.Find.ClearFormatting;
WordApp.Selection.Find.Replacement.ClearFormatting;
WordApp.Selection.Find.Text := OStr;
WordApp.Selection.Find.Replacement.Text := NStr;
WordApp.Selection.Find.Forward := True;
WordApp.Selection.Find.Wrap := wdFindContinue;
WordApp.Selection.Find.Format := False;
WordApp.Selection.Find.MatchCase := False;
WordApp.Selection.Find.MatchWholeWord := true;
WordApp.Selection.Find.MatchByte := True;
WordApp.Selection.Find.MatchWildcards := False;
WordApp.Selection.Find.MatchSoundsLike := False;
WordApp.Selection.Find.MatchAllWordForms := False;
WordApp.Selection.Find.Execute(Replace:=wdReplaceAll);
end;
 
多人接受答案了。
 
后退
顶部