Hallo Zusammen,
ich arbeite gerade an einer Lösung, wie ich alle Daten mit der Dateiendung .xlsx aus einem Ordner auf meinem Desktop "Wochenberichte" öffne, Daten aus dem Blatt "Wochenbericht" nach einem bestimmten Schema kopiere und in einer Masterdatei "Wochenberichte" Blatt "data" importiere.
Ich habe schon viel mit ChatGPT versucht, bin aber nie nahe an eine finale Lösung ran gekommen. Die Dateien wurden zwar geöffnet aber der Inhalt kreuz und quer in der Zieldatei eingefügt.
Ordner: Wochenberichte Rohdaten
Zieldatei: Wochenberichte Blatt data
https://www.herber.de/bbs/user/158773.xlsx
Quelldatei: Wochenbericht KWxy (Name ist variabel) Blatt Wochenbericht
https://www.herber.de/bbs/user/158777.xlsx
Kopiert werden soll wie folgt:
Von Quelldatei nach Zieldatei
B3:B6 nach A3:D3
E4:E6 nach E3:G3
B8:B18 nach H3:R3
E8:E18 nach S3:AC3
H8:H18 nach AD2:AN3
B21:B31 nach AO3:AY3
E21:E31 nach AZ3:BJ3
H21:H31 nach BK3:BU3
B34:B44 nach BV3:CF3
E34:E44 nach CG3:CQ3
H34:H44 nach CR3:DB3
B47:B57 nach DC3:DM3
E47:E57 nach DN3:DX3
H47:H57 nach DY3:EI3
B59 nach EJ3
Danach die nächste Datei eine Zeile tiefer
ChatGPT hat folgenden Code für mich geschrieben und hat leider immer einfach aufgehört zu schreiben.
Hier ein Beispiel:
Sub DatenInWochenberichtKopieren()
'Variablen deklarieren
Dim Pfad As String
Dim Dateiname As String
Dim wbZiel As Workbook
Dim wsZiel As Worksheet
'Pfad zum Ordner mit den Quelldateien angeben
Pfad = "C:\Pfad\zum\Ordner\mit\Quelldateien\"
'Erste Datei im Ordner auswählen
Dateiname = Dir(Pfad & "*.xlsx")
'Loop über alle Dateien im Ordner
Do While Dateiname > ""
'Quelldatei öffnen
Workbooks.Open (Pfad & Dateiname)
'Zieldatei öffnen
Set wbZiel = ThisWorkbook
'Zielblatt auswählen
Set wsZiel = wbZiel.Sheets("data")
'Daten von Quelldatei in Zieldatei kopieren
wsZiel.Range("A3") = ActiveWorkbook.Sheets(1).Range("B3")
wsZiel.Range("B3") = ActiveWorkbook.Sheets(1).Range("B4")
wsZiel.Range("C3") = ActiveWorkbook.Sheets(1).Range("B5")
wsZiel.Range("D3") = ActiveWorkbook.Sheets(1).Range("B6")
wsZiel.Range("E3") = ActiveWorkbook.Sheets(1).Range("E4")
wsZiel.Range("F3") = ActiveWorkbook.Sheets(1).Range("E5")
wsZiel.Range("G3") = ActiveWorkbook.Sheets(1).Range("E6")
wsZiel.Range("H3") = ActiveWorkbook.Sheets(1).Range("B8")
wsZiel.Range("I3") = ActiveWorkbook.Sheets(1).Range("B9")
wsZiel.Range("J3") = ActiveWorkbook.Sheets(1).Range("B10")
wsZiel.Range("K3") = ActiveWorkbook.Sheets(1).Range("B11")
wsZiel.Range("L3") = ActiveWorkbook.Sheets(1).Range("B12")
wsZiel.Range("M3") = ActiveWorkbook.Sheets(1).Range("B13")
wsZiel.Range("N3") = ActiveWorkbook.Sheets(1).Range("B14")
wsZiel.Range("O3") = ActiveWorkbook.Sheets(1).Range("B15")
wsZiel.Range("P3") = ActiveWorkbook.Sheets(1).Range("B16")
wsZiel.Range("Q3") = ActiveWorkbook.Sheets(1).Range("B17")
wsZiel.Range("R3") = ActiveWorkbook.Sheets(1).Range("B18")
wsZiel.Range("EJ3") = ActiveWorkbook.Sheets(1).Range("B59")
'Quelldatei schließen
Workbooks(Dateiname).Close
'Nächste Datei im Ordner auswählen
Dateiname = Dir
'Zielzeile für nächste Datei um 1 erhöhen
Set wsZiel = wbZiel.Sheets("Wochenbericht")
wsZiel
Eventuell hat ja jemand atok eine Idee wie man das "einfach" umsetzen kann.