Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Excel-Daten aus etlichen Dateien einlesen





Frage

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 1 von albert204

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