![]() |
AW: Word Automatisation Beschleunigen
Zitat:
Das ist ja der Vorteil daß es da Standdardaufrufe Beim erstellen eines Dokumentes aus einer Vorlage gibt. Gruß K-H |
AW: Word Automatisation Beschleunigen
Tiger Lilly: Das werde ich mir mal anschauen.
|
AW: Word Automatisation Beschleunigen
Zitat:
Das war allerdings ohne Exists Prüfung, sondern eine Iteration in einem gegebenen Dokument durch die Liste der definierten Bookmarks. Auf die Art konnte man beliebig große Feldinhalte befüllen und das Ganze auch bei mehrseitigen Dokumenten so schnell, dass man mit einem System/Mitarbeiter mehrere Hochleistungsdrucker in Betrieb halten kann. Man muss nur aufpassen, dass man sich bei der Arbeit mit den Dokumenten nicht unbemerkt die Bookmarks zerstört. Aber vielleicht kann man das mit neueren Wordversionen auch besser sehen und bedienen. Drumrum war noch eine Gesamtseitenkontrolle, um Fehldrucke/Fehlbefüllung zu erkennen und einseitig/mehrseitiges vorbedrucktes Papier nicht falsch zu bedrucken. |
AW: Word Automatisation Beschleunigen
Ich versuche das gerade umzusetzen. Bei einfachen Textersetzungen klappt das auch gut, aber wenn die Textmarke mit einer Tabelle gefüllt ist, dann habe ich Probleme, dass immer mehr Tabellen in einer Textmarke entstehen und nicht wie gewünscht nur eine neue Tabelle in der Textmarke.
Delphi-Quellcode:
Also der erste Durchgang mit der frischen Vorlage funktioniert. Die Tabelle kann einwandfrei eingesetzt werden. Nur ab dem zweiten Durchgang werden es immer mehr Tabellen innerhalb einer Bookmark und es wird immer langsamer. Was klar ist.
var ovBookmark, ovBRange : OleVariant;
iRows, iCols : Integer; ovBookmark := 'NameDerTextmarke'; ovBRange := WordApp.ActiveDocument.Bookmarks.Item(ovBookmark).Range; WordTable := WordApp.ActiveDocument.Tables.Add(ovBRange, iRows, iCols); // Dann wird die Tabelle mit Inhalt gefüllt. // .... // Später dann noch // Hier hatte ich auch schon versucht noch einmal nach dem Befüllen der Tabelle noch einmal ovBRange neu zu setzen. // Wenn ich ovBRange := WordApp.ActiveDocument.Bookmarks.Item(ovBookmark).Range; setze ändert das das Problem nicht. Es werden immer mehr Tabellen im Inneren der Bookmark. // Wenn ich ovBRange := WordTable.Range; setze, dann erhalte ich beim erneuten erstellen einer Tabelle die Meldung: "Der Bereich kann nicht gelöscht werden". WordApp.ActiveDocument.Bookmarks.Add(ovBookmark, ovBRange); |
AW: Word Automatisation Beschleunigen
Ich krieg leichtes Hirnsausen mit Blick auf VB, aber ich glaube Du musst die Table der Range zuweisen und nicht eine Table mit Hilfe der Range anlegen.
|
AW: Word Automatisation Beschleunigen
Das kann ich gut verstehen.
Ich habe jetzt den Weg gewählt die Tabellen zu löschen, bevor ich neue einfüge. Dazu merke ich mir die Bookmarks in denen eine Tabelle erstellt wird in einer StringList.
Delphi-Quellcode:
Scheint zumindest zu funktionieren.if aListOfBookmarksWithTables.Count > 0 then begin for iCounter2 := aListOfBookmarksWithTables.Count-1 downto 0 do begin WordTable:= WordApp.ActiveDocument.Bookmarks.Item(aListOfBookmarksWithTables[iCounter2]).Range.Tables.Item(1); WordTable.Delete; aListOfBookmarksWithTables.Delete(iCounter2); end; end; |
AW: Word Automatisation Beschleunigen
Wenn in dem Dokument im Leerzustand keine Tabellen sind, könntest du doch einfach pauschal alle Tabellen im Dokument löschen und musst das nicht so kompliziert mit Merkliste machen, oder?
|
AW: Word Automatisation Beschleunigen
Danke Jumpy,
Man muss dem User der die Vorlage gestaltet auch die Möglichkeit geben Tabellen anderweitig zu ergänzen, ohne dass das System dann diese auch löscht. Ergo komme ich am Merken der mit temporären Tabellen befüllten Bookmarks nicht vorbei. Z.B. werden für die Positionierung der Elemente (Bilder, Beschreibung, Preistabelle) auch Tabellen in unserer aktuellen Vorlage verwendet, daher konnte ich den Weg nicht gehen. Wir haben das ganze jetzt so im Betrieb und es funktioniert. Allerdings nicht wesentlich schneller als vorher mit dem Neuöffnen der Vorlagen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:46 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