Herbers Excel-Forum - das Archiv

Zusammenführung aus mehreren Dateien


Betrifft: Zusammenführung aus mehreren Dateien
von: Bernd

Geschrieben am: 13.09.2019 09:34:46
Hallo,
ich habe zwar ähnliche Fragestellungen mit Lösungen im Netz gefunden, aber zu 100% passen die bei mir leider nicht wegen der Nebenbedingung, dass der Import aus einem bestimmte Tabellenblatt erfolgen soll und in der Zusammenführung der Name der Quelldatei stehen sollte.
Im Detail:
Ich möchte in einer Datei (Zusammenführung) gerne zeilenweise die Daten aus Quelldateien einsammeln. Da einzulesenden Dateien möchte ich gerne per Mehrfachmarkierung im Explorer auswählen. Pro Datei interessiert mich nur ein bestimmtes Tabellenblatt, das in jeder Quelldatei "Daten" heißt. Der Aufbau der einzulesenden Tabelle aus jeder Datei ist immer identisch. Der Spaltenkopf befindet sich stets in Zeile 4 und die Quelldaten beginnen ab Zeile 5.
Am Schluss sollte in der Zusammenführung eine große Liste identisch zum Aufbau der Quelldateientstehen mit der Besonderheit, dass in Spalte A jeweils der Dateiname der Quelldatei stehen sollte!
Ich habe Musterdateien zum Testen erstellt:
https://www.herber.de/bbs/user/132019.zip
Vielen Dank im Voraus für ein passenden Code, der meine "Nebenbedingungen" berücksichtigt.
Viele Grüße
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

Geschrieben am: 13.09.2019 14:03:33
Hallo Regina,
nachfolgender Code gefällt mir schon recht gut. Dort muss ich die Quelldateien in ein vorgegebens Verzeichnis reinkopieren. Persönlich würde mir flexible Auswahl über Explorer besser gefallen.
Die Spaltenköpfe werden es aus jeder Quelldatei rüberkopiert : Einmal reicht mir natürlich.
Wäre das "anpassungsfähig"?
Viele Grüße
Bernd
PS: Hier der Code:
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
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

Geschrieben am: 14.09.2019 10:48:41
Hi,
das sollte dann so funktionieren:
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

Excel-Beispiele zum Thema "Zusammenführung aus mehreren Dateien"
Druck aus mehreren Tabellenblättern auf eine Druckseite Daten von mehreren Blättern auf ein Druckblatt
Werte in mehreren Spalten sortieren Den selben Bereichsnamen in mehreren Tabellenblättern
Tabelle nach mehreren Kriterien summieren Auswahl von Zellen in mehreren Zeilen verhinden
Wert von einer Zelle zur anderen in mehreren Tabellen übernehmen Benannte Bereich aus mehreren Arbeitsmappen importieren
Filtern über VBA nach mehreren Kriterien Kosten nach mehreren Kriterien erfassen
Bewerten Sie hier bitte das Excel-Portal