Word Vorlage.dotx Datei aus Excel füllen

Bild

Betrifft: Word Vorlage.dotx Datei aus Excel füllen
von: Mark
Geschrieben am: 21.10.2015 22:19:41

Hallo Zusammen,
aus einer Excel Datei fülle ich per VBA in einen Word-Dokument bis zu 200 kleine Tabellen. In der Vorlage Datei habe ich für diesen Zweck 200 leere Tabellen angelegt und mit Bookmarks versehen. Anschließen fülle ich die benötigten Tabellen und lösche die Tabellen die "zuviel" sind. Funktioniert auch soweit, aber das abschließende löschen der unnötigen Tabellen dauert sehr lange (2 bis 4 Sek. pro Tabelle).
Hat jemand eine Idee warum das so lange dauert?
Nachstehend der Code für das löschen (Tabellen und CR). iCountRow gibt die verwendenten Tabellen an. Die höher "gebookmarkten" sollen gelöscht werden.
iCountRows = iCountRows + 1
For i = iCountRows To Word_Document.Tables.Count
Word_Document.Bookmarks("Table" + CStr(i)).Range.Tables(1).Delete
Word_Document.Bookmarks("Enter" + CStr(i)).Range.Characters(1).Delete
Debug.Print CStr(i)
Next i
Danke
Gruß
Mark

Bild

Betrifft: AW: Word Vorlage.dotx Datei aus Excel füllen
von: fcs
Geschrieben am: 25.10.2015 17:09:04
Hallo Mark,
Laufzeitproblem: ???
Lösche die Objekte mal vom Ende des Dokuments

For i = Word_Document.Tables.Count To iCountRows Step-1
oder Probiere eine der folgenden Varianten, die von der 1. nicht benutzten Tabelle bis zum Dokumentende bzw. letzten Enter alles in einem Block löscht.
Sub Makro1()
'
' Makro1 Makro
'
    Dim Word_Document As Object 'Word.Document
    Dim i, icountRows
    Dim wdRange As Object 'Word.Range
    Set Word_Document = ActiveDocument 'Testzeile
    
    icountRows = 6 'Testwert
'Löschen von leerer Tablle bis Ende Dokument
    
    icountRows = icountRows + 1
    Set wdRange = Word_Document.Bookmarks("Table" + CStr(icountRows)).Range
    Set wdRange = Word_Document.Range(Start:=wdRange.Start, _
                End:=Word_Document.StoryRanges(wdMainTextStory).End)
    wdRange.Delete
'
'oder
'
   
    icountRows = icountRows + 1
    i = Word_Document.Tables.Count
    Set wdRange = Word_Document.Bookmarks("Table" + CStr(icountRows)).Range
    Set wdRange = Word_Document.Range(Start:=wdRange.Start, _
        End:=Word_Document.Bookmarks("Enter" + CStr(i)).Range.End)
    wdRange.Delete
End Sub

Gruß
Franz

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Word Vorlage.dotx Datei aus Excel füllen"