Ein in der Länge jeweils veränderliches Tabellenblatt soll an definierter Stelle in ein Word-Dokument kopiert werden. ich benutze zur Ermittlung des benutzten Bereiches die Eigenschaft UsedRange.Hier ein Ausschnitt des Codes.
Dim wks As Worksheet
Dim Bereich As Variant
Set WrdApp = New Word.Application
WrdApp.Documents.Add Template:= _
Pfad0 & "Rechnung.dot", NewTemplate:=False, DocumentType:=0
Set WrD = WrdApp.ActiveDocument
Set wks = ActiveWorkbook.Worksheets("BetragErmitteln")
Set Bereich = wks.UsedRange
With WrD
Bereich.Copy
.Bookmarks("Tabelle").Range.PasteSpecial Link:=False, DataType:=wdPasteRTF, _
Placement:=wdInLine, DisplayAsIcon:=False
End With
(Den Code für weitere Übertragungen in das Dokument und für Speichern und Schließen des Word-Dokumentes habe ich weg gelassen).
Das funktioniert auch soweit, nur bekomme ich den Bereich immer größer als aktuell vorhanden. Das Problem wurde schon häufig beschrieben und die Ursachen sind mir einigermaßen klar. Zur Vermeidung wollte ich nachfolgenden Code anstelle der UsedRange-Eigenschaft benutzen. Der Code stammt aus einem "Code-Book".
Set Bereich = wks.Range(Cells(1, 1), Cells(Cells.SpecialCells(xlCellTypeLastCell).Row, _
Cells.SpecialCells(xlCellTypeLastCell).Column))
Leider steigt VBA mit Laufzeitfehler 1004 und der Meldung "Die Methode "Range" für das Objekt '-Worksheet' ist fehlgeschlagen.
Was mache ich falsch, wo liegt mein Denkfehler? Man kann es sicher einfacher bzw. verständlicher lösen. Nur leider bin ich in VBA noch nicht so weit. Ich wäre für einen Hinweis, wie ich eine Tabelle in ihrer wirklichen Länge selektieren oder kopieren kann, sehr dankbar.
Gruß Dieter