Forum
Grundkurs
»Introduktion
»Snabbguide
»Komponenter
»Händelser
»Strängar
»Räkna med Delphi »Egna
typer
»Selektion
»Iteration
»Menyer
»Funktioner
»Arraystrukturer
Tips & Tricks
»Nya tips
»Blandat
»Databaser
»Filer
»Forms
»Grafik
»Internet
»Komponenter
»Matematik
»Multimedia
»Objekt/ActiveX
»Skrivare
»Strängar
»System
»Mest lästa tips
Artiklar
»Delphi och ADO
»Bygga en DLL
»Skapa en enkel rapport
»Hantera registret
»Enheter, units
»Klassen TCanvas
»Använd LookUp Controls
Nya
tips
Lägg
till tips
Delphilänkar
Gästbok
|
|
|
|
Ersätt text i Word
|
Kategori: Objekt/ActiveX
Inlagt: 2004-06-27
Läst: 1381
Inlagt av: Staffan Berg
|
Beskrivning |
Exempel på att söka och ersätta text i Microsoft Word från Delphi.
|
Kod |
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;
|
|
|