以下代码是从大富翁里找来的,经测试每次执行后都只能替换第一个,有点郁闷,我想不提示地一次进行全部替换,怎么改,是不是哪个参数没设对?
需要放(WordApplication1,WordDocument1)-------------
procedure TForm1.Button1Click(Sender: TObject);
var
  Filename:OleVariant;
  findtext, matchcase, matchwholeword, matchwildcards, matchsoundslike,
 matchallwordforms, Oforward, wrap, format, replacewith, replace,
 matchchashida,matchdiacritics,matchalef,matchcontrol: olevariant;
begin
  WordApplication1.Connect;
  WordApplication1.Visible:=True;
  Filename:='C:\aa.doc';
  WordApplication1.Documents.Open(Filename,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
     EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam, 
     EmptyParam,EmptyParam,EmptyParam,EmptyParam);
  WordDocument1.ConnectTo(WordApplication1.ActiveDocument);
  WordApplication1.Options.CheckSpellingAsYouType := False;
  WordApplication1.Options.CheckGrammarAsYouType := False;
 //设置参数 
 findtext := '<#总额#>';
 matchcase := false; 
 matchwholeword := true;
 matchwildcards := false;
 matchsoundslike := false;
 matchallwordforms := false; 
 Oforward := true;
 wrap := wdReplaceAll;//wdfindcontinue;//wdReplaceAll,wdfindcontinue,EmptyParam
 format := false;
 replacewith := '¥100.00';
 replace := true;
 matchchashida := false;
 matchdiacritics := false;
 matchalef := false;
 matchcontrol := true;
 //查找替换
 WordApplication1.Selection.Find.Execute(findtext, matchcase, matchwholeword,
 matchwildcards, matchsoundslike, matchallwordforms, Oforward,
 wrap, format, replacewith, replace,
 matchchashida,matchdiacritics,matchalef, matchcontrol);end;

解决方案 »

  1.   

    word 录宏看下...
    具体哪个.. 忘记了
      

  2.   

    WordApplication.Documents.Open(oFileName,
                                     EmptyParam,EmptyParam,EmptyParam,
                                     EmptyParam,EmptyParam,EmptyParam,
                                     EmptyParam,EmptyParam,EmptyParam,
                                     EmptyParam,EmptyParam);  WordDocument.ConnectTo(WordApplication.ActiveDocument);  FindText := 'fossil2000';
      ReplaceWith := 'sanmaotuo';
      Replace := 2;  {type
      WdReplace = TOleEnum;
      const
      wdReplaceNone = $00000000;
      wdReplaceOne = $00000001;
      wdReplaceAll = $00000002; }//关键参数  WordDocument.Content.Find.Execute(FindText,
                                        EmptyParam,EmptyParam,EmptyParam,
                                        EmptyParam,EmptyParam,EmptyParam,
                                        EmptyParam, EmptyParam,
                                        ReplaceWith,Replace,
                                        EmptyParam,EmptyParam,EmptyParam,EmptyParam);
      WordDocument.Save;
      WordDocument.Close;
      WordDocument.Free;  WordApplication.Free
      

  3.   

    你的replace := true 实际是replace := 1 而 wdReplaceOne = $00000001 所以只替换一个,
    replace := 2就可以了(wdReplaceAll = $00000002)
      

  4.   

    真郁闷,不知哪个家伙搞个true上去,还以为只能true/false,浪费了我N多时间,晕啊!感谢sanmaotuo(老冯)兄!!