Mega Code Archive

 
Categories / Delphi / Activex OLE
 

How to replace text in a word document

Title: How to replace text in a word document uses ComObj; // Replace Flags type TWordReplaceFlags = set of (wrfReplaceAll, wrfMatchCase, wrfMatchWildcards); function Word_StringReplace(ADocument: TFileName; SearchString, ReplaceString: string; Flags: TWordReplaceFlags): Boolean; const wdFindContinue = 1; wdReplaceOne = 1; wdReplaceAll = 2; wdDoNotSaveChanges = 0; var WordApp: OLEVariant; begin Result := False; { Check if file exists } if not FileExists(ADocument) then begin ShowMessage('Specified Document not found.'); Exit; end; { Create the OLE Object } try WordApp := CreateOLEObject('Word.Application'); except on E: Exception do begin E.Message := 'Word is not available.'; raise; end; end; try { Hide Word } WordApp.Visible := False; { Open the document } WordApp.Documents.Open(ADocument); { Initialize parameters} WordApp.Selection.Find.ClearFormatting; WordApp.Selection.Find.Text := SearchString; WordApp.Selection.Find.Replacement.Text := ReplaceString; WordApp.Selection.Find.Forward := True; WordApp.Selection.Find.Wrap := wdFindContinue; WordApp.Selection.Find.Format := False; WordApp.Selection.Find.MatchCase := wrfMatchCase in Flags; WordApp.Selection.Find.MatchWholeWord := False; WordApp.Selection.Find.MatchWildcards := wrfMatchWildcards in Flags; WordApp.Selection.Find.MatchSoundsLike := False; WordApp.Selection.Find.MatchAllWordForms := False; { Perform the search} if wrfReplaceAll in Flags then WordApp.Selection.Find.Execute(Replace := wdReplaceAll) else WordApp.Selection.Find.Execute(Replace := wdReplaceOne); { Save word } WordApp.ActiveDocument.SaveAs(ADocument); { Assume that successful } Result := True; { Close the document } WordApp.ActiveDocument.Close(wdDoNotSaveChanges); finally { Quit Word } WordApp.Quit; WordApp := Unassigned; end; end; procedure TForm1.Button1Click(Sender: TObject); begin Word_StringReplace('C:\Test.doc','Old String','New String',[wrfReplaceAll]); end;