Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: mehrere Excel Datein per VBA konsolidieren

mehrere Excel Datein per VBA konsolidieren
24.07.2018 14:24:50
Anne
Hallo zusammen,
ich benötige Hilfe für ein Makro ; ich habe mehrere Exceldateien, aus denen ich jeweils die Angaben vom ersten sheet untereinanderkopieren und in eine neue Excel einfügen möchte. Mein Problem : die Anzahl der Zeilen variiert vopn Datei zu Datei. Mit dem nachfolgenden Makro habe ich das Problem, dass aus der zB aus der ersten Datei alles kopiert wird (10Zeilen), aus der zweiten DAtei alles ab Zeile 11, aus der 3.Datei alles ab Zeile 45, etc. Wie muss ich den Code anpasen, damit ich aus jeder der Datein alle Zeilen untereinander bekomme ?
Vielen Dank vorab für Drüberschauen :)
Public Sub Daten_mehrerer_Dateien_zusammenfuehren()
On Error GoTo errExit
Dim WBQ As Workbook
Dim WBZ As Workbook
Dim varDateien As Variant
Dim lngAnzahl As Long
Dim lngLastQ As Long
Set WBZ = ActiveWorkbook
'Altdaten auf Zielblatt löschen
WBZ.Worksheets(1).Range("A2:G65536").ClearContents
varDateien = _
Application.GetOpenFilename("Datei (*.xlsx),*.xlsx", False, "Bitte gewünschte Datei(en)  _
markieren", False, True)
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
For lngAnzahl = LBound(varDateien) To UBound(varDateien)
Set WBQ = Workbooks.Open(Filename:=varDateien(lngAnzahl))
lngLastQ = WBQ.Worksheets(1).Range("A65536").End(xlUp).Row
WBQ.Worksheets(1).Range("A2:Z" & lngLastQ).Copy _
Destination:=WBZ.Worksheets(1).Range("A" & WBZ.Worksheets(1).Range("A65536").End(xlUp).Row +  _
1)
WBQ.Close
Next
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
End With
MsgBox "Es wurden " & UBound(varDateien) & " Dateien zusammengefügt.", 64
Exit Sub
errExit:
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
End With
If Err.Number = 13 Then
MsgBox "Es wurde keine Datei ausgewählt"
Else
MsgBox "Es ist ein Fehler aufgetreten!" & vbCr _
& "Fehlernummer: " & Err.Number & vbCr _
& "Fehlerbeschreibung: " & Err.Description
End If
End Sub

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: mehrere Excel Datein per VBA konsolidieren
24.07.2018 17:34:49
Dieter
Hallo Anne,
da du die letzte belegte Zeile jeweils anhand von Spalte A bestimmst, tritt sicher ein Problem auf, wenn diese Spalte nicht für alle Sätze ordentlich belegt ist.
Außerdem berücksichtigst du nicht, dass Excel mittlerweile die Anzahl der Zeilen kräftig erhöht hat (was bei der von dir genannten Größenordnung hier kein Problem ist).
Ich habe das Programm folgendermaßen ergänzt:
Public Sub Daten_mehrerer_Dateien_zusammenfuehren_Neu()
On Error GoTo errExit
Dim WBQ As Workbook
Dim WBZ As Workbook
Dim wsQ As Worksheet
Dim wsZ As Worksheet
Dim varDateien As Variant
Dim lngAnzahl As Long
Dim lngLastQ As Long
Dim lngLastZ As Long
Set WBZ = ThisWorkbook
Set wsZ = WBZ.Worksheets(1)
'Altdaten auf Zielblatt löschen
wsZ.Range(wsZ.Cells(2, "A"), _
wsZ.Cells(wsZ.Rows.Count, "Z")).ClearContents
varDateien = _
Application.GetOpenFilename("Datei (*.xlsx),*.xlsx", False, "Bitte gewünschte Datei(en)  _
markieren", False, True)
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
For lngAnzahl = LBound(varDateien) To UBound(varDateien)
Set WBQ = Workbooks.Open(Filename:=varDateien(lngAnzahl))
Set wsQ = WBQ.Worksheets(1)
lngLastQ = LetzteZeile(Blatt:=wsQ)
lngLastZ = LetzteZeile(Blatt:=wsZ)
wsQ.Range(wsQ.Cells(2, "A"), _
wsQ.Cells(lngLastQ, "Z")).Copy _
Destination:=wsZ.Cells(lngLastZ + 1, "A")
WBQ.Close
Next
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
End With
MsgBox "Es wurden " & UBound(varDateien) & " Dateien zusammengefügt.", 64
Exit Sub
errExit:
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
End With
If Err.Number = 13 Then
MsgBox "Es wurde keine Datei ausgewählt"
Else
MsgBox "Es ist ein Fehler aufgetreten!" & vbCr _
& "Fehlernummer: " & Err.Number & vbCr _
& "Fehlerbeschreibung: " & Err.Description
End If
End Sub
Function LetzteZeile(Blatt As Worksheet) As Long
Dim benBer As Range ' Benutzer Bereich
Dim spalte As Long
Set benBer = Blatt.UsedRange
For spalte = benBer.Column To benBer.Column + benBer.Columns.Count - 1
LetzteZeile = WorksheetFunction.Max(LetzteZeile, Blatt.Cells(Blatt.Rows.Count, spalte).End( _
xlUp).Row)
Next spalte
End Function
Viele Grüße
Dieter
Anzeige
AW: mehrere Excel Datein per VBA konsolidieren
25.07.2018 08:50:58
Anne
Hallo Dieter, vielen Dank für den neuen Code - ich würde ihn gerne testen, leider bekommen ich jetzt eine Fehlermeldung (Fehler beim Kompilieren : Syntaxfehler). Allerdings nicht "nur" in deinem Code, sondern auch in meinem von gestern :( Hast Du vielleicht eine Idee, woran das liegen könnte ?
Habe im Netz leider nichts gefunden....
Danke und viele Grüße,
Anne
Anzeige
AW: mehrere Excel Datein per VBA konsolidieren
25.07.2018 08:51:48
Anne
... der Fehler tritt an dieser Stelle auf :
varDateien = _
Application.GetOpenFilename("Datei (*.xlsx),*.xlsx", False, "Bitte gewünschte Datei(en) _
markieren", False, True)
AW: mehrere Excel Datein per VBA konsolidieren
25.07.2018 09:37:48
Dieter
Hallo Anne,
das liegt daran, dass hier das System zur Darstellung des Codes eine Zeile mitten im Text zerlegt hat.
Schreib den Befehl bitte folgendemaßen
  varDateien = _
Application.GetOpenFilename("Datei (*.xlsx),*.xlsx", False, _
"Bitte gewünschte Datei(en) markieren", False, True)

dann sollte das funkionieren.
Viele Grüße
Dieter
Anzeige
AW: mehrere Excel Datein per VBA konsolidieren
25.07.2018 10:02:21
Anne
Hallo Dieter,
super ! Vielen Dank ! Funktioniert (fast) perfekt :) Eine Kleinigkeit noch : die zu importierenden Daten sind das Ergebnis aus Formeln, so dass jetzt der Dateipfad mit kopiert wird. Ich meine das ich mit PasteSpecial nur die Werte kopieren kann, scheitere aber gerade an der Syntax :(
Könntest Du mir nochmal helfen.
Danke und viele Grüße,
Anne
Anzeige
AW: mehrere Excel Datein per VBA konsolidieren
25.07.2018 11:28:10
Anne
Hallo zusammen,
hat sich erledigt :) Hab die richtige Syntax.
Vielen Dank nochmal !
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige