Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1336to1340
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

Daten aus mehreren Excel-Dateien zusammenfügen

Daten aus mehreren Excel-Dateien zusammenfügen
18.11.2013 12:32:19
Joana
Hallo liebes Forum,
mein Problem wurde hier zwar schon in ähnlicher Form ausführlich diskutiert, jedoch so 100% Lösungsansätze habe ich nicht gefunden. Zu meinem Problem:
Ich habe einen Ordner, in dem sich an die 250 Excel-Dateien befinden. Die Excel-Dateien sind alle identisch. Also sie bestehen alle aus einem Arbeitsblatt und alle sind im Spaltenumfang gleich, nur die Zeilen können nach unten varieren (max. 5 bis 10 Zeilen mehr). Ich möchte jetzt gerne aus diesen vielen Dateien von Spalte A bis Spalte AQ die Werte in nur eine Excel-Tabelle ziehen (ohne hinterlegte Formeln und ohne irgendeine Formatierung) und diese vielen Daten sollen bzw. können auch untereinander geschrieben werden. Allerdings sollen die Werte erst ab Zeile 14 übernommen werden.
Ich habe aus dem Internet einen VBA-Code gefunden, der eigentlich super funktioniert, jedoch die Werte schon ab Zeile 1 übernimmt. Es muss aber unbedingt Zeile 14 sein. Ich bekomme es einfach nicht hin, hab auch schon versucht ihn umzuschreiben - aber nix. Füge mal den Code, so wie ich ihn aus dem Netz hab, mit an. Vielleicht hat ja jemand ne Idee. Würde mich über ne hilfreiche Antwort sehr freuen, denn ich bin dem Heulen nahe. Vielen Dank schonmal im Vorraus ;-)
Sub Zusammenführen()
Dim i               As Long
Dim sPfad           As String
Dim sDatei          As String
Dim vFileToOpen     As Variant
Dim lngLZ           As Long
Dim blnÜberschrift  As Boolean
Dim iCalc           As Integer
vFileToOpen = Application.GetOpenFilename("Excel Files (*.xls*), *.xls*", , , , True)
If Not IsArray(vFileToOpen) Then Exit Sub
iCalc = Application.Calculation
On Error GoTo ENDE:
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
For i = 1 To UBound(vFileToOpen)
sDatei = Dir(vFileToOpen(i))
sPfad = Left(vFileToOpen(i), InStr(vFileToOpen(i), sDatei) - 1)
With Tabelle1.Range("A1")
.Formula = "=LOOKUP(2,1/('" & sPfad & "[" & sDatei & "]Tabelle1'!$A:$A""""),ROW('" _
_
& sPfad & "\[" & sDatei & "]Tabelle1'!$A:$A))"
lngLZ = .Value
End With
With Tabelle1
If blnÜberschrift Then
.Cells(.Rows.Count, 1).End(xlUp).Offset(1).Resize(lngLZ - 1, 43).Formula = _
"='" & sPfad & "[" & sDatei & "]Tabelle1'!A2"
Else
blnÜberschrift = True
.Cells(.Rows.Count, 1).End(xlUp).Offset(1).Resize(lngLZ, 43).Formula = _
"='" & sPfad & "[" & sDatei & "]Tabelle1'!A1"
End If
End With
Next
With Tabelle1.UsedRange
.Copy
.PasteSpecial xlPasteValues
.Rows(1).Delete
End With
ENDE:
Application.EnableEvents = True
Application.Calculation = iCalc
Application.ScreenUpdating = True
If Err Then MsgBox Err.Description, , "Fehler: " & Err
End Sub

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten aus mehreren Excel-Dateien zusammenfügen
19.11.2013 06:46:38
fcs
Hallo Joana,
hier das Makro mit Anpassungen, so das die Startzeile nicht die 1. Zeile ist.
Die 1. Titelzeile, die 1. Datenzeile und die letzte zu übertragende Spalte werden über Variablen gesetzt.
Hier musst du ggf. noch anpassen.
Gruß
Franz
Sub Zusammenführen()
Dim i               As Long
Dim sPfad           As String
Dim sDatei          As String
Dim vFileToOpen     As Variant
Dim lngLZ           As Long
Dim blnÜberschrift  As Boolean
Dim iCalc           As Integer
Dim lngTitel1       As Long
Dim lngDaten1       As Long
Dim lngSpalteL      As Long
lngTitel1 = 13    '1. Zeile mit Titeln die übertragen werden soll, _
wenn keine Titel übertragen werden sollen, dann diesen Wert = cLngDaten1 setzen
lngDaten1 = 14 '1. Zeile mit Daten die übertragen werden soll
lngSpalteL = 43 'letzte Spalte mit Daten die übertragen werden soll
vFileToOpen = Application.GetOpenFilename("Excel Files (*.xls*), *.xls*", , , , True)
If Not IsArray(vFileToOpen) Then Exit Sub
iCalc = Application.Calculation
On Error GoTo ENDE:
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
With Tabelle1
'Hilfszeile einfügen vor Zeile 1
.Rows(1).Insert
End With
For i = 1 To UBound(vFileToOpen)
sDatei = Dir(vFileToOpen(i))
sPfad = Left(vFileToOpen(i), InStr(vFileToOpen(i), sDatei) - 1)
'Anzahl Datenzeilen in Quelle  in Spalte A in Zelle A1 per Formel ermitteln
With Tabelle1.Range("A1")
.Formula = "=LOOKUP(2,1/('" & sPfad & "[" & sDatei _
& "]Tabelle1'!$A:$A""""),ROW('" & sPfad & "\[" & sDatei _
& "]Tabelle1'!$A:$A))"
lngLZ = .Value
End With
With Tabelle1
If blnÜberschrift Then
'Bei 2. und folgender Datei nur die Daten übertragen
.Cells(.Rows.Count, 1).End(xlUp).Offset(1).Resize(lngLZ - lngDaten1 + 1, _
lngSpalteL).Formula = _
"='" & sPfad & "[" & sDatei & "]Tabelle1'!A" & lngDaten1
Else
'Bei 1. Datei die Daten ggf. inklusive Titelzeile(n) übertragen
blnÜberschrift = True
.Cells(.Rows.Count, 1).End(xlUp).Offset(1).Resize(lngLZ - lngTitel1 + 1, _
lngSpalteL).Formula = _
"='" & sPfad & "[" & sDatei & "]Tabelle1'!A" & lngTitel1
End If
End With
Next
With Tabelle1.UsedRange
'Formeln durch Werte ersetzen
.Copy
.PasteSpecial xlPasteValues
'Hilfszeile wieder löschen
.Rows(1).Delete
End With
ENDE:
Application.EnableEvents = True
Application.Calculation = iCalc
Application.ScreenUpdating = True
If Err Then MsgBox Err.Description, , "Fehler: " & Err
End Sub

Anzeige
AW: Daten aus mehreren Excel-Dateien zusammenfügen
20.11.2013 10:27:38
Joana
Hallo Franz,
vielen lieben Dank, dass du dir Zeit genommen hast... Es funktioniert.
DANKE SCHÖN.

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige