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
Antwort Antwort
GoTo0815

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

AW: Word Automatisation Beschleunigen

  Alt 16. Mär 2020, 20:33
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:
  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);
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.
Falls ich mal ein "DANKE" vergesse, hier schon mal eins im Voraus: Danke für Eure Zeit!

Geändert von GoTo0815 (16. Mär 2020 um 20:36 Uhr)
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#2

AW: Word Automatisation Beschleunigen

  Alt 17. Mär 2020, 11:29
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.
Gruß, Jo
  Mit Zitat antworten Zitat
GoTo0815

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

AW: Word Automatisation Beschleunigen

  Alt 17. Mär 2020, 11:45
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:

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;
Scheint zumindest zu funktionieren.
Falls ich mal ein "DANKE" vergesse, hier schon mal eins im Voraus: Danke für Eure Zeit!
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.740 Beiträge
 
Delphi 6 Enterprise
 
#4

AW: Word Automatisation Beschleunigen

  Alt 17. Mär 2020, 21:03
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?
Ralph
  Mit Zitat antworten Zitat
GoTo0815

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

AW: Word Automatisation Beschleunigen

  Alt 19. Mär 2020, 09:32
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.
Falls ich mal ein "DANKE" vergesse, hier schon mal eins im Voraus: Danke für Eure Zeit!
  Mit Zitat antworten Zitat
Antwort Antwort

 

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 03:13 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