How to replace text in a Word document #136
Here's how to use OLE automation for MS Word and replace some text string in any document:
use ActiveX, ComObj; const wdFindContinue = 1; wdReplaceOne = 1; wdReplaceAll = 2; var WordApp: Variant; begin // create OLE object for MS Word application: WordApp := CreateOLEObject('Word.Application'); // load a document from your file WordApp.Documents.Open(yourDocFileName); WordApp.Selection.Find.ClearFormatting; WordApp.Selection.Find.Text := yourStringForSearch; WordApp.Selection.Find.Replacement.Text := yourNewStringForReplace; WordApp.Selection.Find.Forward := True; WordApp.Selection.Find.MatchAllWordForms := False; WordApp.Selection.Find.MatchCase := Flase; WordApp.Selection.Find.MatchWildcards := False; WordApp.Selection.Find.MatchSoundsLike := False; WordApp.Selection.Find.MatchWholeWord := False; WordApp.Selection.Find.MatchFuzzy := False; WordApp.Selection.Find.Wrap := wdFindContinue; WordApp.Selection.Find.Format := False; WordApp.Selection.Find.Execute(Replace := wdReplaceAll) end;
To replace the first occurence of your text only use:
WordApp.Selection.Find.Execute(Replace := wdReplaceOne);
Instead of:
WordApp.Selection.Find.Execute(Replace := wdReplaceAll)
To check if text was found then use the Found method:
if WordApp.Selection.Find.Found then {do something}
Save the modified document with:
WordApp.ActiveDocument.SaveAs(yourDocFileName);
Finally, close the MS Word instance with:
WordApp.ActiveDocument.Close; WordApp.Quit; WordApp := Unassigned;
If you want to change a font instead of text, use the Font
property of WordApp.Selection.Find.Replacement instead of
Text.
Author: | Shlomo Abuisak |
---|---|
Contributor: | Shlomo Abuisak |
Added: | 2009/11/05 |
Last updated: | 2009/11/05 |