Inhalte vieler excel dateien auslesen und als Liste wiedergeben
Hallo miteinander,
Habe Frage: wie kann ich mit einer Excel Datei einen Ordner und dessen Unterordner auslesen.
Die Dateien haben immer an derselben Stelle ein Datum C4 stehen.
Es kann sein, dass einige Dateien mehr als ein Tabellenblatt haben. Die Datei sollte in der Lage sein, immer das erste Tabellen Blatt auszulesen.
Das Datum und die Inhalte von B6:B55;C6:C55;D6:D55;E6:E55 sofern werte sind, soll die Datei nach Datum gelistet diese in eine Tabelle listen. Diese Tabelle sollte fortlaufend sein. Das Datum sollte vor jede Zeile wiederholt werden, in der es Werte aus dem Tabellenblatt gibt. werden, um eine Verwechslungsgefahr zu vermeiden.
Die Namen der Tabellenblätter sind unbekannt.
LG by Bastian
Habe Frage: wie kann ich mit einer Excel Datei einen Ordner und dessen Unterordner auslesen.
Die Dateien haben immer an derselben Stelle ein Datum C4 stehen.
Es kann sein, dass einige Dateien mehr als ein Tabellenblatt haben. Die Datei sollte in der Lage sein, immer das erste Tabellen Blatt auszulesen.
Das Datum und die Inhalte von B6:B55;C6:C55;D6:D55;E6:E55 sofern werte sind, soll die Datei nach Datum gelistet diese in eine Tabelle listen. Diese Tabelle sollte fortlaufend sein. Das Datum sollte vor jede Zeile wiederholt werden, in der es Werte aus dem Tabellenblatt gibt. werden, um eine Verwechslungsgefahr zu vermeiden.
Die Namen der Tabellenblätter sind unbekannt.
LG by Bastian
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 328662
Url: https://administrator.de/forum/inhalte-vieler-excel-dateien-auslesen-und-als-liste-wiedergeben-328662.html
Ausgedruckt am: 16.05.2025 um 01:05 Uhr
13 Kommentare
Neuester Kommentar

Habe Frage:
Habe Antwort:Standardgedöns, gibt's alles schon
VBA bzw. Makro Programmierung um mehrere, gleichaufgebaute Exceldateien (über 60) in einer seperaten Datei zusammenzuführen
Excel VBA Datein auslesen
Habe fertig.
Gruß

Und Zeile D3:H3 enthält Überschriften?
Wenn ja das hier tut das: auch mit allen Files eines Ordners (inkl. Unterordner) - getestet.
p.s. wenn man schon Code irgendwo kopiert sollte man auch die Quelle nennen
Excel Makro, VBA soll Pfad auslesen Ordner inkl. Unterordner die vorliegenden Excel Dateien öffnen und 2 bestimmt Zellen in eine neue Excel untereinander schreiben
Wenn ja das hier tut das: auch mit allen Files eines Ordners (inkl. Unterordner) - getestet.
p.s. wenn man schon Code irgendwo kopiert sollte man auch die Quelle nennen
Excel Makro, VBA soll Pfad auslesen Ordner inkl. Unterordner die vorliegenden Excel Dateien öffnen und 2 bestimmt Zellen in eine neue Excel untereinander schreiben
Dim fso As Object
Sub ImportData()
Dim col As New Collection, file As Variant, wb As Workbook, rngDest As Range, ws As Worksheet, rngSource As Range
'Ordner der die Dateien enthält
Const FOLDER = "C:\Ordner"
'Filesystemobject
Set fso = CreateObject("Scripting.FileSystemObject")
'alle Excel-Dateien rekursiv listen
getAllFiles fso.GetFolder(FOLDER), True, Array("xlsx", "xls"), col
'Screenupdates und eventuelle Dialoge für Batchbetrieb unterdrücken
Application.DisplayAlerts = False
Application.ScreenUpdating = False
With Sheets(1)
'Für jede Excel-Datei
For Each file In col
'nächste freie Zelle in Spalte A ermitteln
Set rngDest = .Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)
'mit erstem Sheet des Workbooks arbeiten
With GetObject(file).Sheets(1)
' Wenn C2 nicht leer ist
If .Range("C2").Value <> "" Then
'Daten ermitteln
Set rngSource = .Range("D3:H" & .Cells(Rows.Count, "D").End(xlUp).Row)
'Wenn Daten vorhanden sind
If rngSource.Rows.Count > 1 Then
' exclude die Überschriften
Set rngSource = rngSource.Offset(1)
' Kopiere die Daten ins Ziel
rngSource.Copy
rngDest.Offset(0, 1).PasteSpecial xlPasteValuesAndNumberFormats
' Setze Datum vor die Zeilen
rngDest.Resize(rngSource.Rows.Count - 1).Value = .Range("C2").Value
End If
End If
'Workbook schließen
.Parent.Close False
End With
Next
End With
'Screenupdates und Dialoge wieder einschalten
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
Sub getAllFiles(ByVal fldr As Object, boolRecursion As Boolean, arrFileExtensions As Variant, ByRef col As Collection)
For Each file In fldr.Files
For i = 0 To UBound(arrFileExtensions)
If LCase(arrFileExtensions(i)) = LCase(fso.GetExtensionName(file.Path)) Then
col.Add file.Path
Exit For
End If
Next
Next
If boolRecursion Then
For Each subFolder In fldr.SubFolders
getAllFiles subFolder, True, arrFileExtensions, col
Next
End If
End Sub

kann die auswerung auch nur den Wert also ohne Formel kopieren??
Ja .Copy und .PasteSpecial sind deine Freunde.
Jetzt kann ich sie aber nicht mehr ausführen: Laufzeitfehler 1004
Dann hängt bei dir was im Hintergrund. Abmelden oder alle Excelinstanzen im Taskmgr killen.das Paste muss ich hier einbauen oder??
Siehe Änderung Code oben' .......
' Kopiere die Daten ins Ziel
rngSource.Copy
rngDest.Offset(0, 1).PasteSpecial xlPasteValuesAndNumberFormats

Kann das daran liegen, dass die Seite nicht immer auf dem ersten Tabellenblatt gespeichert wurde??
Letztlich brauche ich die Werte nur aus dem ersten Tabellen Blatt der Excel Dateien..
Du widersprichst dir hier selber, obiger Code nimmer immer das Tabellenblatt das ganz links in der Liste der Tabs liegt, was du anLetztlich brauche ich die Werte nur aus dem ersten Tabellen Blatt der Excel Dateien..
GetObject(file).Sheets(1)
sehen kannst.Es wird eine deiner Dateien einfach fehlerhaft aufgebaut sein. Kann ich hier leider nicht sehen.
Mehr helfe ich dir gerne, ist dann aber nich mehr umsonst.