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

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

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
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
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 !

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige