Anzeige
Archiv - Navigation
1916to1920
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

variablen Bereich in neue Excel kopieren

variablen Bereich in neue Excel kopieren
01.02.2023 21:18:26
Falk
Hallo,
ich möchte aus einem sheet einen Bereich in eine neue Datei kopieren. Dazu habe ich hier im Forum folgendes gefunden:
Sub speicher()
Dim wkbName as String, wkbNeu as String, wksName As String
wkbName = ThisWorkbook.Name
wksName = ActiveSheet.Name
Workbooks.Add
wkbNeu = ActiveWorkbook.Name
Workbooks(wkbName).Sheets(wksName).Range("A1:I72").Copy Workbooks(wkbNeu).Sheets(1).Range("A1")
Dim pfad As String, dateiname As String
pfad = Workbooks(wkbName).Sheets(wksName).Range("A4")
dateiname= Workbooks(wkbName).Sheets(wksName).Range("I23")
Workbooks(wkbNeu).SaveAs Filename:=pfad & "\" & dateiname & ."xls"
ActiveWorkbook.Close
End Sub
Das funktioniert auch, aber da ich einen dynamischen Bereich habe, habe ich folgendes angepasst
Workbooks(wkbName).Sheets(wksName).Range(Cells(IntVar1, IntVar2), Cells(IntVar3, IntVar4)).Copy Workbooks(wkbNeu).Sheets(1).Range("A1")
Jetzt bekomme ich einen Laufzeitfehler 1004
Woran könnte das liegen?

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: variablen Bereich in neue Excel kopieren
01.02.2023 22:15:48
Yal
Hallo Falk,
"Workbooks(wkbName).Sheets(wksName).Range(Cells(IntVar1, IntVar2), Cells(IntVar3, IntVar4)).Copy":
die "Cells" müssen referenziert sein. Es müsste einen Worksheet-Objekt davor geben. Die Verwendung von With könnte helfen, dann bedarft es nur einen Punkt davor zu setzen:
With Workbooks(wkbName).Sheets(wksName)
    Range(.Cells(IntVar1, IntVar2), .Cells(IntVar3, IntVar4)).Copy '...
End With
Dafür ist der Punkt vor dem ersten Range nicht mehr notwendig, weil es nur eine Zusammenfassung von 2 vollständig definierten Range.
Aber warum die Namen der Workbook/Worksheet mitschleppen, wenn man die Objekte selbst referenzieren kann?
IntVar1 bis IntVar4 sind kein sprechenden Namen. Spalten- und Zeilenzahl sind eigentlich Long. Aber der Coding 10 Zeilen lang ist, lieber kurze Variablennamen.
Oder man verwendet Objekt-Variablen:
Sub speichern()
Dim wsQ As Worksheet ' Q wie Quelle
Dim wsZ As Worksheet ' Z wie Ziel. Parent von einem Worksheet ist immer ein Workbook.
    Set wsQ = ActiveSheet
    Set wsZ = Workbooks.Add.Sheets(1)
    Range(wsQ.Cells(ze1, sp1), wsQ.Cells(ze2, sp2)).Copy wsZ.Range("A1") 
    wsZ.Parent.SaveAs Filename:=wsQ.Range("A4") & "\" & wsQ.Range("I23") & ".xls"
    wsZ.Parent.Close
End Sub
VG
Yal
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige