ich verzweifle gerade an einer Aufgabe, die ich als "Standardaufgabe" betrachtet habe und dachte, in der Vergangenheit auch schon öfter gelöst zu haben.
Ich habe eine Arbeitsmappe mit diversen Tabellenblättern. In dieser Datei werden verschieden Ausgangsdaten verarbeitet und Liquiditätsplanungen für mehrere Firmen erstellt. Jede Planung ist dabei in einem eigenen Tabellenblatt (Tabelle1, 2, 3).
Nun sollen jeweils Ausschnitte dieser Planungen in ein neues Arbeitsblatt kopiert werden. Dabei soll für jede Firma / jeden Ausschnitt in der Zieldatei ein Tabellenblatt vorhanden sein. [Die Zieltabelle wird dann als PDF gespeichert und evtl. direkt per Mail versandt. Aber das ist hier nicht die Problemstellung.]
Da die zu kopierenden Bereiche sich verändern können, werden diese in der Ausgangsdatei (Tabelle15) abgelegt und in VBA dynamisch ausgelesen.
Was mir jetzt nicht gelingt und auch in der Vergangenheit nie so Aufgabenstellung war, ist die gezielte Ansprache des jeweiligen Tabellenblattes in der Zieldatei.
Mein Code sieht bisher so aus:
Sub Bankenspiegel()
Application.ScreenUpdating = False
Dim intAnzahlTab As Integer
Dim i As Integer
Dim rngGoki As Range
Dim rngImmo As Range
Dim rngSons As Range
Dim pdfName As String
Dim strName As String
Dim wkbZiel As Workbook
Dim wkbQuelle As Workbook
Set wkbQuelle = ThisWorkbook
pdfName = ThisWorkbook.Path & "\" & Format(Tabelle24.Cells(21, 3), "yyyy_mm_dd") & " _
Bankenspiegel" & ".pdf"
With Tabelle1
Set rngHolding = .Range("A1:" & Tabelle15.Cells(25, 8))
Set rngImmo = .Range("A1:" & Tabelle15.Cells(26, 8))
Set rngSons = .Range("A1:" & Tabelle15.Cells(27, 8))
End With
intAnzahlTab = Application.SheetsInNewWorkbook
Application.SheetsInNewWorkbook = 3
Set wkbZiel = Workbooks.Add
Set wkbZiel = ActiveWorkbook
'ActiveWorkbook.Name = pdfName
Application.SheetsInNewWorkbook = intAnzahlTab
Firma 2 kopieren
strName = Tabelle1.Name
rngHolding.Copy Destination:=wkbZiel.Tabelle1
With Range("A1")
'nur die Werte werden in die neue Datei an gleicher Stelle übertragen
.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
'nur die Formate werden in die neue Datei an gleicher Stelle übertragen
.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End With
Cells.EntireColumn.AutoFit
wkbZiel.Tabelle1.Name = strName
Firma 2 kopieren
strName = Tabelle2.Name
rngImmo.Copy 'Destination:=wkbZiel.Tabelle2
With Range("A1")
'nur die Werte werden in die neue Datei an gleicher Stelle übertragen
.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
'nur die Formate werden in die neue Datei an gleicher Stelle übertragen
.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End With
Cells.EntireColumn.AutoFit
wkbZiel.Tabelle2.Name = strName
Firma 3 kopieren
Application.CutCopyMode = False
Application.Goto reference:=Tabelle1.Range("A1")
Application.ScreenUpdating = True
End Sub
Im Prinzip hat das Kopieren schon funktioniert, solange ich lediglich
rngHolding.Copy
geschrieben habe.
Aber das hat natürlich dann bei dem zweiten Kopiervorgang dazu geführt, dass die Daten in der Zieltabelle überschrieben wurden. Daher wollte ich das Ziel mit Copy Destination direkt ansprechen. Aber Excel teilt mir mit, dass das Objekt die Methode oder der Eigenschaft nicht unterstützt. Die gleiche Meldung bekomme ich auch beim Ändern der Tabellennamen in der Zieltabelle (wkbZiel.Tabelle1.Name = strName).
Kann mir jemand einen Hinweis geben, wie ich dies Problem gelöst bekomme und vielleicht auch, wo mein Denkfehler bei der Vorgehensweise ist? Für mich ist es nämlich noch immer ganz logisch, dass ich das Ziel mit der "Syntax" Arbeitsmappe.Tabelle.Bereich anspreche.
Vielen Dank im Voraus!
Beste Grüße
Richard