AW: Daten aus Tabellen zusammenführen
15.02.2020 13:00:24
Regina
Hi Stephan,
anbei ein Code, der alle xlsx-Dateien des angegebenen Verzeichnisses (musst Du anpassen) öffnet, die Daten entsprechend Deiner Vorgaben kopiert und wieder schließt. Der Cod egehört in Deine Summen-Datei. Den Rest mit den Teilergebnissen kannst Du ja mal versuchen über den makrorekorder aufzuzeichen und anzupassen. Bei Fragen melde Dich gerne nochmal.
Public Sub dateien_oeffnen()
Dim str_findfile As String
Dim obj_wkb_datei As Workbook
Dim obj_wks_quelle As Worksheet
Dim lng_zeile_quelle As Long
Dim lng_zeile_ziel As Long
Dim obj_wkb_ziel As Workbook
Dim obj_wks_ziel As Worksheet
Application.ScreenUpdating = False
ChDrive ("C:\") ' laufwerksbuchstabe anpassen
ChDir ("C:\Test\") 'verzeichnis anpassen
str_findfile = Dir("*.xlsx", vbNormal)
Set obj_wkb_ziel = ThisWorkbook
Set obj_wks_ziel = obj_wkb_ziel.Worksheets("Summe")
lng_zeile_ziel = 4
Do Until str_findfile = ""
Set obj_wkb_datei = Workbooks.Open(str_findfile)
Set obj_wks_quelle = obj_wkb_datei.Worksheets(1)
With obj_wks_quelle
For lng_zeile_quelle = 7 To .Cells(Rows.Count, 2).End(xlUp).Row
obj_wks_ziel.Cells(lng_zeile_ziel, 1) = obj_wkb_datei.Name
obj_wks_ziel.Cells(lng_zeile_ziel, 2) = obj_wkb_datei.Worksheets(1).Name
obj_wks_ziel.Cells(lng_zeile_ziel, 3) = .Range("C2")
obj_wks_ziel.Cells(lng_zeile_ziel, 4) = .Range("E2")
obj_wks_ziel.Cells(lng_zeile_ziel, 5) = .Cells(lng_zeile_quelle, 2)
obj_wks_ziel.Cells(lng_zeile_ziel, 6) = .Cells(lng_zeile_quelle, 3)
obj_wks_ziel.Cells(lng_zeile_ziel, 7) = .Cells(lng_zeile_quelle, 4)
obj_wks_ziel.Cells(lng_zeile_ziel, 8) = .Cells(lng_zeile_quelle, 5)
obj_wks_ziel.Cells(lng_zeile_ziel, 9) = .Cells(lng_zeile_quelle, 6)
lng_zeile_ziel = lng_zeile_ziel + 1
Next
End With
obj_wkb_datei.Close Savechanges:=False
str_findfile = Dir()
Loop
Application.ScreenUpdating = True
MsgBox "fertig!"
End Sub
Gruß
Regina