![]() |
AW: Word Automatisation Beschleunigen
Eine Dot-Datei ist eine Vorlage, eine DOC das (mehr oder weniger) finale Dokument. Da einige Funktionalitäten eigentlich nur bei Vorlagen verfügbar sind, bin ich davon ausgegangen, daß DOC ein Schreibfehler war??
Die wichtigste Beschleunigung wurde schon genannt Visible=False. Dann bringt die Arbeit mit Range statt Selection auch etwas. Und vllt. können wir Dir weiter helfen wenn Du den Source postest. Gruß K-H |
AW: Word Automatisation Beschleunigen
Hmm..
Also um das leeren = Laden wird Du wohl nicht herum kommen. Word unterstützt kein speichern/laden per Stream, somit kannst Du dir das originale Word-Dokument nicht vor dem Bearbeiten in nen Stream speichen und dann vor jeder Rechnung einfach wieder ins Word zurück schreiben. Es scheint hier nur eine Möglichkeit über die Zwischenablage zu geben, was mir aber zu gefährlich wäre, wenn der User noch andere Copy/Paste Aktionen während deiner Erzeugung durchführen kann. Eine Beschleunigung könnte somit (neben Visible:=False / ScreenUpdating := False) noch die Verwendung einer schnellen SSD zum Laden der Vorlage oder eine temporäre RAM-Disk, wenn es keine Hardware Option gibt.. ;) Alternativ kannst Du die Vorlage natürlich auch jedes Mal selber neu per Programm erstellen, ob das jedoch schneller geht... Somit würde ansonsten nur die Verwendung einer Report-Komponente eine Alternative darstellen, dann müsste in dessem Designer nur das Word-Dokument nachgebildet werden. |
AW: Word Automatisation Beschleunigen
ich werfe mal die verschiedenen dot.net Word API´s ins rennen.
Wir nutzen zur Zeit DevExpress Office File API. Die Geschwindigkeit gegenüber der Word Automation ist "atemberaubend" Das Handling ist meiner Meinung nach auch wesentlich einfacher. Damit kann man eine Vorlage Laden und daraus beliebig viele neue Dokumente erzeugen. Bei der Anzahl an Dokumenten die Ihr erstellen müsst ist das ja vielleicht eine Überlegung wert. Und Pdf's kann man auch direkt damit erzeugen |
AW: Word Automatisation Beschleunigen
Bereits alles umgesetzt:
SSD: Check Ram Disk: Check Visible:= False : Check ScreenUpdating := False : Check Vorlage selbst erstellen könnte klappen, ist für nen Test natürlich mächtig aufwändig :-) Zwischenablage sehe ich ähnlich, obwohl, wenn der Rechner nur für diese Aufgabe verwendet wird, dann könnte das ggf. trotzdem ein Weg sein. .Net traue ich mich momentan nicht ran. Denke zwar, dass könnte die Lösung sein, aber ich habe mich da ehrlich gesagt noch nie mit beschäftig. |
AW: Word Automatisation Beschleunigen
Moin...:P
Könntest du dir einen Umbau auf FastReport oder ähnliches vorstellen? Da hast du die Oberfläche (Word) außen vor. Du müßtest die Daten andersweitig "vorbereiten" ... Bilder in Datenbank/Ordner etc. |
AW: Word Automatisation Beschleunigen
Moin auch !!! :-)
Ich habe schon sehr viel über andere Wege nachgedacht. Ein Grund um an Word festzuhalten ist, dass die Änderung der Vorlagen (beispielsweise das Layout) von jemandem ohne weitere Kenntnis in Word durchgeführt werden kann. Ich empfinde die Ratschläge zu anderen Wegen auch wichtig und ggf. hilfreich, aber mit diesem Thread hier, verfolge ich den Ansatz die bestehende Word Automatisation zu beschleunigen. Erst wenn hier alle Möglichkeiten erschöpft sind, würde ich ein Abbiegen auf einen anderen Weg in Betracht ziehen. Ich habe halt immer noch die Hoffnung, dass hier irgendwer schreibt: "Da musst Du einfach VariableVomTypOleVariant := WordApp.Documents.ActiveDocument und dann ein WordApp.Documents.Add und dem dann die Varible zuweisen." |
AW: Word Automatisation Beschleunigen
Als ich die Beschreibung deiner Vorgehensweise las, dachte ich gleich an die Mail-Merge Funktionalität in Word, bei der eine Vorlage mit Platzhaltern durch Einträge einer Datenquelle gefüllt und pro Datensatz ein separates Dokument gedruckt wird (gedruckt kann auch das Speichern als PDF bedeuten). Ich bin mir aber nicht sicher, ob das alle deine Anforderungen erfüllt.
|
AW: Word Automatisation Beschleunigen
Ja, die Serienbrieffunktion hatte ich auch bereits im Blick. Problematisch wird es halt mit dem Einfügen von unterschiedlich großen Preistabellen.
Sagen wir ein Artikel wäre Kies. Den es in 10 verschiedenen Körnungen gäbe und in Gebinden von 25kg bis hin zu mehreren Tonnen. Der nächste Artikel wäre ein T-Shirt in 4 Größen und 3 Mengenstaffeln. Will sagen die Tabellen haben unterschiedliche Mengen an Spalten und Reihen. Vielleicht übersehe ich da auch etwas, aber ich konnte mir bisher keinen Weg vorstellen, das in einem Serienbrief abzubilden. Schon auf der Seite der Quelldaten.. :-) |
AW: Word Automatisation Beschleunigen
Habe mich jetzt mal ein wenig bei den VBAlern umgeschaut.
Und habe zumindest einen Lösungsansatz gefunden, dass Dokument einfach weiter zu verwenden. Man merkt sich die Range der Textmarke füllt diese mit Inhalt. Dadurch werden laut Forumseintrag offene Textmarken zu geschlossenen. Nach dem Speichern des befüllten Dokuments als PDF ersetze ich die gemerkten Ranges alle wieder durch gleichnamige Textmarken. Ob das die gewünschte Performance bringt und das alles so klappt, werde ich testen, aber es ist zumindest ein Ansatz, mit dem ich auf Basis von "einer einzigen" geöffneten Vorlage arbeiten könnte. Hier gefunden: ![]()
Code:
Sub TBrange()
Dim bRange As Range ' If ActiveDocument.Bookmarks.Exists("F1") Then Set bRange = ActiveDocument.Bookmarks("F1").Range bRange.Text = "der Text" End If ' ' Textmarke recykeln With ActiveDocument.Bookmarks .Add Range:=bRange, Name:="F1" End With End Sub |
AW: Word Automatisation Beschleunigen
Wenn die Vorlagen auch als RTF Dateien vorliegen können, dann ist das ev. eine Option:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19: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-2025 by Thomas Breitkreuz