Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi word Template (https://www.delphipraxis.net/78812-word-template.html)

Christophe 11. Okt 2006 12:54


word Template
 
Aloha zusammen

Mal wieder ne frage. Ich habe Word Templates (in htm gespeichert). diese sind mit keyWords bestückt z.B. @datum@ dies soll nun ersetzt werden durch das Datum. Nun habe ich eine schlaufe gebaut und innerhalb dieser schlaufe den code:
Delphi-Quellcode:
...
    if x = 1 then
      word.Documents.Add('\\server\verwaltung\wordvorlagen\i_'+sprache+'.htm', EmptyParam)
    else
      word.Selection.InsertFile('\\server\verwaltung\wordvorlagen\i_'+sprache+'.htm');

    vAlt := '@RDATUM@';
    vNeu := DateToStr(DateTimePicker1.Date);
    word.Selection.Find.Text := vAlt;
    word.Selection.Find.Replacement.Text := vNeu;

    word.Selection.Find.MatchWholeWord := True;
    word.Selection.Find.Execute(Replace := wdReplaceOne);
    word.Selection.EndKey(Unit:=wdStory);

    word.Selection.InsertBreak(wdPageBreak);
...
Das funktioniert nicht schlecht alle seiten werden eingebunden aber nur die erste wird mit dem Datum bestückt. Nun meine Frage wie bekomme ich es hin das ich jede einzelne seite im gleichen doc mit einem individuellen datensatz ersetzen kann? So wie ich es in dem Code geschrieben habe werden nur die platzhalter der erste seite ersetzt.

Christophe 17. Okt 2006 12:52

Re: word Template
 
hallo zusammen

ich bin zwar weitergekommen mit meiner Template Geschichte aber was ich nicht hinbekomme ist das ich nicht mehrere wörter nacheinander ersetzen kann. Mein Beispiel code:
Delphi-Quellcode:
...
    word.Selection.Find.ClearFormatting;
    word.Selection.Find.Text := '@RDATUM@';
    word.Selection.Find.Replacement.Text := DateToStr(DateTimePicker1.Date);

    word.Selection.Find.Forward := True;
    word.Selection.Find.Wrap := wdFindContinue;
    word.Selection.Find.MatchWholeWord := True;
    word.Selection.Find.Format := False;
    //word.Selection.Find.MatchCase := wrfMatchCase in Flags;
    word.Selection.Find.MatchSoundsLike := False;
    word.Selection.Find.MatchAllWordForms := False;
    word.Selection.Find.Execute(Replace := wdReplaceOne);

    word.Selection.Find.ClearFormatting;
    word.Selection.Find.Text := '@RECHNR@';
    word.Selection.Find.Replacement.Text := 'test';

    word.Selection.Find.Forward := True;
    word.Selection.Find.Wrap := wdFindContinue;
    word.Selection.Find.MatchWholeWord := True;
    word.Selection.Find.Format := False;
    //word.Selection.Find.MatchCase := wrfMatchCase in Flags;
    word.Selection.Find.MatchSoundsLike := False;
    word.Selection.Find.MatchAllWordForms := False;
...
Das ganze ist in einer while schlaufe die, die Templates aufrufen und den platzhalter Text ersetzen sollten. Mit dem ersten Replace funktioniert dies auch wunderbar aber der zweite wird nicht ersetzt. Ich hoffe es weis jemand an was das liegen kann.

Danke

Christophe

Christophe 17. Okt 2006 12:59

Re: word Template
 
Hat sich erledigt ... sorry

der richtige code:

Delphi-Quellcode:
    word.Selection.Find.ClearFormatting;
    word.Selection.Find.Text := '@RDATUM@';
    word.Selection.Find.Replacement.Text := DateToStr(DateTimePicker1.Date);

    word.Selection.Find.Forward          := True;
    word.Selection.Find.Wrap             := wdFindContinue;
    word.Selection.Find.MatchWholeWord   := True;
    word.Selection.Find.Format           := False;
    word.Selection.Find.MatchSoundsLike  := False;
    word.Selection.Find.MatchAllWordForms := False;
    word.Selection.Find.Execute(Replace := wdReplaceOne);


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:20 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz