Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Word Template zusammenführen (https://www.delphipraxis.net/141287-word-template-zusammenfuehren.html)

EarlyBird 6. Okt 2009 12:33


Word Template zusammenführen
 
Hallo,
Ich möchte ein Worddokument erstellen das für jeden Datensatz einer Tabelle eine eigene Seite enthält.
Ich habe es mit Mailmerge probiert aber da klappt es nicht mit der Nummerierung der Seiten.
(Die Nummerierung jeder Seite beginnt wieder bei 1, was nicht gewollt ist)
Nun möchte ich das Ganze mit einem Template lösen.
Ich habe in Word ein Template erstellt in dem ich Bookmarks für jedes Tabellenfeld eingefügt habe.
Nun öffne ich ein neues Dokument, mit dem Template als Vorlage, in meinem Programm
Das Dokument fülle ich mit dem Inhalt eines Datensatzes.
Soweit so gut .
Aber wie schaffe ich es nun den Text aus dem neuen Dokument in ein neues „ZielDokument“ einzufügen?
Und wie kann ich es anstellen das ich das Template nur einmal öffnen muss?
Im Augenblick schließe ich es und öffne es neu damit ich wieder eine Leeres neues Dokument aus meinem Template erhalte.
bei mehreren hundert Datensätzen ist das Ganze dann ziemlich langsam.

Vieleicht liege ich auch ganz falsch mit meiner Vorgehensweise.
Bin für jeden Rat und Tipp dankbar

Gruß Edgar

Keldorn 6. Okt 2009 21:26

Re: Word Template zusammenführen
 
Hallo

Das Problem ist evtl, daß beim Serienbrief und mailmerge immer ein Abschnittswechsel und kein Seitenumbruch eingefügt wird. Wenn Du die Seitenzahlen mit "Einfügen->Seitenzahlen->Format" siehst du es ganz unten -> mit der Standardeinstellung wird immer pro Abschnittswechsel wieder bei 1 begonnen. Ich kann Dir aber leider nicht sagen wie Du das für die Serienbriefe rausbekommst.

Wie übergibst Du denn momentan die Daten für den Serienbrief? Per Text? Dann würde ich einfach noch ein zusatzfeld mit übergeben. Wenn Du pro Datensatz eine Seite hast, hast Du doch gleich die aktuelle Seite, das ist wahrscheinlich das einfachste.

Ansonsten könntesnt Du noch mit den Formel-Felder oder der Feldfunktion und "Listnum" experimentieren.

Zusammenfügen würde ich die Doks nicht, das wird sicher grottenlangsam. Aber ich bin der Meinung, das es hier oder im DF schonmal einen Thraed dazugab, finde den nur nicht so schnell.

Gruß Frank

EarlyBird 7. Okt 2009 06:38

Re: Word Template zusammenführen
 
Zitat:

Zitat von Keldorn
Das Problem ist evtl, daß beim Serienbrief und mailmerge immer ein Abschnittswechsel und kein Seitenumbruch eingefügt wird.

Stimmt. Leider lässt sich das auch nicht ändern.
Ich habe auf jeden Fall nichts gefunden.
Ich habe auch versucht die Abschnittswechsel in Seitenumbrüche zu ändern aber das ist auch sehr sehr langsam.

Zitat:

Zitat von Keldorn
Wie übergibst Du denn momentan die Daten für den Serienbrief? Per Text? Dann würde ich einfach noch ein zusatzfeld mit übergeben. Wenn Du pro Datensatz eine Seite hast, hast Du doch gleich die aktuelle Seite, das ist wahrscheinlich das einfachste.

Du meinst ich soll die Seitennummerierung selbst eintragen?
Das geht leider nicht, da das fertige Dokument noch weiter bearbeitet wird und so die Seitennummerierung nicht mehr stimmen würde.

Ich experimentiere gerade mit copy & past, das schein aber auch nicht der beste weg zu sein.

Besten Dank für Deine Tipps Frank

Bin nur leider noch nicht weiter gekommen.
Wenn noch jemand einen Tipp oder Hinweis hat, würde mich sehr freuen.

Gruß Edgar

EarlyBird 7. Okt 2009 08:29

Re: Word Template zusammenführen
 
Ich mache es jetzt so:
Mit Mailmerge erstelle ich das Dokument und anschließend setzte ich alle Pagenumbers auf RestartNumberingAtSection = False

Mit diesem Code.
Delphi-Quellcode:
    For I := 1 To WordApplication1.ActiveDocument.Sections.Count do
      begin
        For X := 1 To WordApplication1.ActiveDocument.Sections.Item(I).Headers.Count do
          begin
            WordApplication1.ActiveDocument.Sections.item(I).Headers.Item(X).PageNumbers.RestartNumberingAtSection = False
          end;
      end;
Das Dokument wird dabei noch nicht angezeigt.
Trotzdem dauert das setzen der RestartNumberingAtSection recht lange.
Kennt Ihr eine schneller oder bessere Methode?

Gruß Edgar


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:14 Uhr.

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