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

Zusammenführung mehrer Excel Dateien

Zusammenführung mehrer Excel Dateien
13.11.2018 14:01:01
Stefan
Hallo Zusammen, ich hoffe ihr könnt mir helfen? Ich brauche eine VBA- Code für folgende Situation:
-In verschiedenen Ordner befinden sich gleich strukturierte Excel- Dateien mit jeweils 2 Tabellenblättern, wobei jeweils nur die Informationen aus dem 1. Tabellenblatt, ab Zeile A3 herauskopiert werden sollen. (kopiert werden sollen nur die Zellen mit Werten)
- Die Dateien sollen per Auswahl aus den verschiedenen Ordner in die die aktuelle Excel Datei eingefügt werden (Also z.B. aus Ordner 1, Datei 3 und 4....Informationen werden gezogen... Klick auf Datei auswählen- Button... Aus Ordner 4, Datei 6-10) Die Informationen sollen jeweils untereinander weg ab Zeile A2 (hier befinden sich Überschriften) gelistet werden.
Da ich ein absoluter Neuling bin, weiß ich leider nicht, wie ich das umsetzen kann! Ich habe _
bereits mit folgendem Code herumgebastelt (ebenfalls aus dem Internet), leider funktioniert _ dieser nicht einwandfrei, da die erste Zeile (Überschriftenzeile) überschrieben wird und zwischen den einzelnen ausgewählten Zeilen immer eine Zeile mit 0- Werten eingefügt wird. Vll. kann mir hier jemand weiterhelfen? Das wäre super!

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("A2")
.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, 12).Formula = _
"='" & sPfad & "[" & sDatei & "]Tabelle1'!A2"
Else
blnÜberschrift = True
.Cells(.Rows.Count, 1).End(xlUp).Offset(1).Resize(lngLZ, 12).Formula = _
"='" & sPfad & "[" & sDatei & "]Tabelle1'!A2"
End If
End With
Call StatusBalken(Int((i / UBound(vFileToOpen)) * 100))
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


Sub StatusBalken(ProzentSatz) ''ProzentSatz = Int((i / 10000) * 100)
Dim Mess, Z, Rest
Static oldStatusBar As Integer
Static blnInit As Boolean
If Not blnInit Then
oldStatusBar = Application.DisplayStatusBar
Application.DisplayStatusBar = True
End If
Mess = ""
For Z = 1 To ProzentSatz
Mess = Mess & ChrW(Val("&H25A0"))
Next Z
Rest = 100 - ProzentSatz
For Z = 1 To Rest
Mess = Mess & ChrW(Val("&H25A1"))
Next Z
Application.StatusBar = Mess & " " & ProzentSatz & "%"
If Rest 

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zusammenführung mehrer Excel Dateien
18.11.2018 16:32:27
fcs
Hallo Stefan,
probiere es mal mit der folgenden Variante.
Hier werden die Quelldateien schreibgeschützt geöffnet und die Daten kopiert statt per Formel eingelesen.
Gruß
Franz
Sub Zusammenführen()
Dim i               As Long
Dim vFileToOpen     As Variant
Dim lngLZ           As Long
Dim iCalc           As Integer
Dim wksZiel         As Worksheet
Dim Zeile_Z         As Long
Dim wkbQuelle       As Workbook
Dim wksQuelle       As Worksheet
Dim rngCopy         As Range
Set wksZiel = Tabelle1 'oder = Activeworkbook.Worksheets("Tabelle1")
iCalc = Application.Calculation
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
On Error GoTo ENDE:
Auswahl_Dateien:
vFileToOpen = Application.GetOpenFilename("Excel Files (*.xls*), *.xls*", , , , True)
If Not IsArray(vFileToOpen) Then GoTo ENDE
Application.ScreenUpdating = False
For i = 1 To UBound(vFileToOpen)
'Quelldatei schreibgeschützt öffnen
Set wkbQuelle = Application.Workbooks.Open(Filename:=vFileToOpen(i), ReadOnly:=True)
Set wksQuelle = wkbQuelle.Worksheets(1)
With wksQuelle
'letzte mit Daten in Spalte A der Quelle
lngLZ = .Cells(.Rows.Count, 1).End(xlUp).Row
If lngLZ >= 3 Then
'Bereich A3:Lxxx zum Kopieren setzen
Set rngCopy = .Range(.Cells(3, 1), .Cells(lngLZ, 12))
With wksZiel
'nächste leere Zeile in Spalte A
Zeile_Z = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
If Zeile_Z 

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige