Betrifft: Zusammenführung aus mehreren Dateien
von: Bernd
Betrifft: AW: Zusammenführung aus mehreren Dateien
von: 1712878.html
Geschrieben am: 13.09.2019 12:33:34
Hi,
Du hast ja nur xlsx-Dateien gepostet. Zeig doch mal, was Du an Programmiercode schon hast. Dann kann mann mal gucken, wo Anpassungsbedarf besteht.
gruß
Regina
Betrifft: AW: Zusammenführung aus mehreren Dateien
von: 1712913.html
Sub MWTabellenAusMehrerenDateienEinlesen()
Dim oTargetSheet As Object
Dim oSourceBook As Object
Dim sPfad As String
Dim sDatei As String
Dim lErgebnisZeile As Long
Dim s As Long
Dim z As Long
Application.ScreenUpdating = False
'Schritt 1: Neues Arbeitsblatt für die Ergebnisse erstellen
Set oTargetSheet = ActiveWorkbook.Sheets.Add
lErgebnisZeile = 1 'Ergebnisse eintragen ab Zeile 1
'Schritt 2: Schleife über alle Excel Dateien in einem Verzeichnis
sPfad = "C:\Herber\LISTE\"
sDatei = Dir(CStr(sPfad & "*.xl*")) 'Alle Excel Dateien
Do While sDatei <> ""
'Schritt 3: öffnen der Datei und Datenübertragung
Set oSourceBook = Workbooks.Open(sPfad & sDatei, False, True) 'nur lesend öffnen
'Datenübertragung alle genutzten Zeilen und Spalten
For z = 1 To oSourceBook.Sheets("Daten").UsedRange.Rows.Count
'Keine Leerzeilen verarbeiten
If Trim(CStr(oSourceBook.Sheets("Daten").Cells(z, 1).Value)) <> "" Then
For s = 1 To oSourceBook.Sheets("Daten").UsedRange.Columns.Count
'Spalte 1 - Dateinamen
oTargetSheet.Cells(lErgebnisZeile, 1).Value = sDatei
'Spalte 2 bis n - Tabelleninhalte des Arbeitsblattes "Daten"
oTargetSheet.Cells(lErgebnisZeile, s + 1).Value = _
oSourceBook.Sheets("Daten").Cells(z, s).Value
Next s
lErgebnisZeile = lErgebnisZeile + 1
End If
Next z
'Schritt 4: Datei wieder zu machen und nächste Schleifenrunde
oSourceBook.Close False 'nicht speichern
'Nächste Datei
sDatei = Dir()
Loop
Application.ScreenUpdating = True 'Das Bildschirm-Aktualisieren wieder einschalten
'Variablen aufräumen
Set oTargetSheet = Nothing
Set oSourceBook = Nothing
End Sub
Betrifft: AW: Zusammenführung aus mehreren Dateien
von: 1713025.html
Option Explicit
Sub MWTabellenAusMehrerenDateienEinlesen()
Dim oTargetSheet As Object
Dim oSourceBook As Object
Dim sPfad As String
Dim sDatei As String
Dim lErgebnisZeile As Long
Dim s As Long
Dim z As Long
Dim var_dateien As Variant
Dim lng_zaehler As Long
Application.ScreenUpdating = False
'Schritt 1: Neues Arbeitsblatt für die Ergebnisse erstellen
Set oTargetSheet = ActiveWorkbook.Sheets.Add
lErgebnisZeile = 1 'Ergebnisse eintragen ab Zeile 1
var_dateien = Application.GetOpenFilename(MultiSelect:=True)
For lng_zaehler = 1 To UBound(var_dateien)
'Schritt 3: öffnen der Datei und Datenübertragung
Set oSourceBook = Workbooks.Open(var_dateien(lng_zaehler), False, True) 'nur lesend ö _
ffnen
'Datenübertragung alle genutzten Zeilen und Spalten
For z = 1 To oSourceBook.Sheets("Daten").UsedRange.Rows.Count
'Keine Leerzeilen verarbeiten
If Trim(CStr(oSourceBook.Sheets("Daten").Cells(z, 1).Value)) <> "" Then
For s = 1 To oSourceBook.Sheets("Daten").UsedRange.Columns.Count
'Spalte 1 - Dateinamen
oTargetSheet.Cells(lErgebnisZeile, 1).Value = sDatei
'Spalte 2 bis n - Tabelleninhalte des Arbeitsblattes "Daten"
oTargetSheet.Cells(lErgebnisZeile, s + 1).Value = _
oSourceBook.Sheets("Daten").Cells(z, s).Value
Next s
lErgebnisZeile = lErgebnisZeile + 1
End If
Next z
'Schritt 4: Datei wieder zu machen und nächste Schleifenrunde
oSourceBook.Close False 'nicht speichern
Next
Application.ScreenUpdating = True 'Das Bildschirm-Aktualisieren wieder einschalten
'Variablen aufräumen
Set oTargetSheet = Nothing
Set oSourceBook = Nothing
End Sub
Gruß Regina
Betrifft: AW: Zusammenführung aus mehreren Dateien
von: 1713419.html
Geschrieben am: 17.09.2019 10:44:48
Hallo Regina.
läuft schnell und perfekt ab! Ein kleines Detail vielleicht, die Spaltenköpfe werden wiederholt. Im Prinzip brauche ich die gar nicht. Könnte ich in der Sammeldatei einmal in Zeile 1 eintragen. Kann man doch so "optimieren"?
Viele Grüße und schon mal ein dickes Danke!
Bernd
Betrifft: AW: Zusammenführung aus mehreren Dateien
von: 1713468.html
Geschrieben am: 17.09.2019 14:07:59
Moin, dann müsstest Du in dieser Zeile:
For z = 1 To oSourceBook.Sheets("Daten").UsedRange.Rows.Count
die 1 durch eine 2 ersetzen.
Gruß
Regina
Betrifft: Perfekt! Danke!
von: 1713600.html
Geschrieben am: 18.09.2019 09:36:26
Nochmals besten Dank,
viele Grüße
Bernd