Excel-Daten aus etlichen Dateien einlesen
Hallo Fachleute,
vielleicht kann mir jemand weiterhelfen. Muss aus mehreren Dateien eines Ordners bestimmte Zellen in einem Arbeitblatt zusammenfassen. Habe nach langem suchen hier im Forum die (fast) passende Lösung gefunden. Funktioniert soweit auch prima. Hat nur den Nachteil, dass bei jedem Import-Vorgang die gesamten Daten an die bereits vorhandenen angehängt werden. Versuche nun seit Stunden eine Lösung zu finden bei der bei jedem Importvorgang in der Zelle B4 begonnen wird. Hier der verwendete Code:
Sub FilesListen()
Call EventsOff
Dim Dateien As Integer
Dim DateiName As String
Dim zaehler As Boolean
With Application.FileSearch
.NewSearch
.LookIn = "D:\eigene dateien\gutachten\gutachtenordner\2007\"
.SearchSubFolders = True
.Filename = "*.xls"
If .Execute() > 0 Then
For Dateien = 1 To .FoundFiles.Count
DateiName = Dir(.FoundFiles(Dateien))
If DateiName <> ThisWorkbook.Name Then
Workbooks.Open Filename:=.FoundFiles(Dateien)
If zaehler = False Then
zeile = 4
Else
zeile = ThisWorkbook.Sheets("RE2007").Cells(Rows.Count, 2).End(xlUp).Row + 1
End If
Workbooks(DateiName).Sheets("Gesamt").Range("AB365:AG365").Copy
ThisWorkbook.Sheets("RE2007").Range("B" & zeile).PasteSpecial Paste:=xlPasteValues
zaehler = True
Workbooks(DateiName).Close SaveChanges:=True
End If
Next Dateien
End If
End With
Call EventsOn
End Sub
Public Sub EventsOff()
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
End Sub
Public Sub EventsOn()
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
End With
End Sub
Vielen Dank, Albert
Antwort schreiben
Antwort 1 von albert204 vom 04.12.2019, 13:28 Options
Hallo zusammen,
versuche das Ganze etwas verständlicher zu machen:
Es sind im Ordner .....\2007 eine Anzahl Dateien mit gleicher Struktur vorhanden. Einige Werte aus diesen Dateien sollen nun im Arbeitsblatt ...\Zahlungen eingelesen werden. Dies funktioniert mit dem Code auch ganz gut. Nur, wenn das Makro nochmals ausgeführt wird, dann hängt es die Daten wieder an die bereits eingelesenen unten an, was dann natürlich zu Doppeleinträgen führt. Beim Ausführen des Makros sollten die eingelesenen Werte deshalb die alten überschreiben, beginnend in der Zelle B4. Vermutlich hängt die Formel in diesem Betreich, komme aber nicht auf die Lösung:
If zaehler = False Then
zeile = 4
Else
zeile = ThisWorkbook.Sheets("RE2007").Cells(Rows.Count, 2).End(xlUp).Row + 1
End If
Workbooks(DateiName).Sheets("Gesamt").Range("AB365:AG365").Copy
ThisWorkbook.Sheets("RE2007").Range("B" & zeile).PasteSpecial Paste:=xlPasteValues
zaehler = True
Viele Grüße, Albert