AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Word Automatisation Beschleunigen

Ein Thema von GoTo0815 · begonnen am 12. Mär 2020 · letzter Beitrag vom 19. Mär 2020
 
GoTo0815

Registriert seit: 18. Mai 2004
148 Beiträge
 
Delphi XE2 Professional
 
#1

Word Automatisation Beschleunigen

  Alt 12. Mär 2020, 12:06
Guten Tag!

Für einen Preislistengenerator verwende ich MS Word.
Für das allgemeine Design einer Seite in dieser Preisliste verwende ich ein einseitiges Worddokument (DOCX) als Vorlage(beispielsweise mit 6 Artikeln auf einer DIN A4 Seite).
Wenn die gesamte Preisliste nun 60 Artikel beinhalten soll, dann lade ich das o.g. Dokument editiere die Infos, Bilder und Tabellen per OLE und speichere das als PDF Dokument ab.
Dann schließe ich das Word Dokument und lade die Vorlage erneut. Das Ganze mache ich dann beispielsweise 10 Mal.
Das funktioniert soweit sehr gut und ist bereits lange verlässlich im Einsatz.

Das öffnen des Worddokuments (Vorlage) erfolgt über

   WordApp.Documents.Open(aFilename, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);

Nun zum Problem:
Mittlerweile müssen hintereinander 100 - 150 verschiedene Preislisten mit jeweils mehr als 300 Artikeln erzeugt werden.
Das bedeutet im aktuellen Maximalfall, dass der o.g. Code 5000 - 7500 Mal ausgeführt wird.
Das laden der Vorlage dauert seine Zeit, was den gasamten Durchlauf auf mehrere Stunden ausweitet.
Ich habe bereits versucht, dass vor dem Start die Wordvorlage in ein virtuelles Laufwerk in den Arbeitspeicher geladen wird, um die Zugriffszeiten zu reduzieren, aber richtig Performance bringt das nicht.
Ein Worddokument ist eine ZIP Datei, bei der nur die Endung auf DOCX umbenannt wurde (übrigens sehr hilfreich, wenn man mal beispielsweise Bilder extrahieren möchte aus einem Dokument, einfach wieder in ZIP umbenennen...).
Somit dauert natürlich das Laden sehr lange.

Kurzum: Weiß jemand, wie ich es schaffen kann ohne jedesmal das Document zu laden?
Also einmal Laden, in eine Variable speichern und immer wieder ein neues Dokument aus dieser Variable erzeugen?
Ich finde dazu einfach nicht die passenden Ansätze im Netz. Ggf. suche ich auch falsch.
Würde mich über Ansätze oder Code sehr freuen.

Grüße
GoTo0815
Falls ich mal ein "DANKE" vergesse, hier schon mal eins im Voraus: Danke für Eure Zeit!
  Mit Zitat antworten Zitat
 

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:32 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 by Thomas Breitkreuz