Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.10.2025 10:28:49
16.10.2025 17:40:39
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Ordner auslesen und aktuelle Dateinamen einlesen

Ordner auslesen und aktuelle Dateinamen einlesen
08.12.2014 11:51:05
jonw
Hallo,
ich möchte über ein VBA-Makro einen Ordner auslesen und die Dateinamen von aktuellen (oder neu erstellten) .gcode-Dateien mit Datum einlesen. Das Ganze soll automatisch passieren, wenn die Excel-Datei geöffnet wird.
Soweit funktioniert das schon ganz gut. Problem dabei ist, dass Excel die Dateinamen nach dem Namen sortiert werden. Ich hätte gern die aktuellen Dateinamen in der untersten Zeile. Meine Versuche sind kläglich gescheitert. Ich habe versucht, "Dateidatum(x)" mit dem heutigen Datum zu vergleichen, um so Dateien herauszufiltern, die heute erstellt worden sind.
Wenn etwas unklar ist, bitte nachfragen.
Mein Code:
Option Explicit
Option Base 1
Sub DateienMitDoc()
Dim FPath         As String
Dim FEndung       As String
Dim FName         As String
Dim DateiNamen()  As String
Dim DateiDatum()  As String
Dim X             As Long
Dim I             As Long
On Error GoTo ENDE
FPath = (Application.ThisWorkbook.Path & "\")         ' Pfad der Suche angeben und letzten  _
Slash \ hinzufügen"
FEndung = "*.gcode"               ' Dateiendung für Suche festlegen
X = 1
ReDim Preserve DateiNamen(X)                    ' Array dimensionieren
ReDim Preserve DateiDatum(X)                    ' Array dimensionieren
FName = Dir(FPath & FEndung)
DateiNamen(X) = FName                   ' erste Datei einlesen und im Array speichern
DateiDatum(X) = FileErstDatum(FPath & FName)    ' Datum/Uhrzeit der Datei einlesen und im Array  _
speichern
FName = Dir
DateiDatum(X) = Format(DateiDatum(X), "dd.mm.yyyy")
Do While FName  ""
X = X + 1
ReDim Preserve DateiNamen(X)                    ' Array dimensionieren
ReDim Preserve DateiDatum(X)                    ' Array dimensionieren
DateiNamen(X) = FName                   ' Über Schleife einlesen
DateiDatum(X) = FileErstDatum(FPath & FName)   ' Datum/Uhrzeit der Datei einlesen und im Array  _
speichern
DateiDatum(X) = Format(DateiDatum(X), "dd.mm.yyyy")
FName = Dir
Loop
For I = 1 To X
ActiveSheet.Range("B3:B1000000").Cells(I).Value = DateiNamen(I)
ActiveSheet.Range("C3:C1000000").Cells(I).Value = DateiDatum(I)
Next
Exit Sub
ENDE: MsgBox "Fehler aufgetreten"
End Sub
Function FileErstDatum(DATEI) As String
FileErstDatum = CreateObject("Scripting.FileSystemObject").GetFile(DATEI).DateCreated
End Function
Vielen Dank im Voraus! :)
Viele Grüße

Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ordner auslesen und aktuelle Dateinamen einlesen
08.12.2014 12:07:38
Beverly
Hi,
ohne deinen Code genauer angesehen zu haben: weshalb sortierst du nicht nach dem Einlesen das Ganze nach Spalte C aufsteigend?


AW: Ordner auslesen und aktuelle Dateinamen einlesen
08.12.2014 12:21:00
jonw
Das tue ich bereits. Allerdings möchte ich die Dateien vom nächsten Tag ja wieder einlesen. Dies geschieht wieder in alphabethischer Reihenfolge. Deshalb habe ich folgende Reihenfolge der Makros beim Starten meiner Excel-Datei eingebaut:
- Start
- Öffnen des Makros, welches nach dem Alphabet sortiert
- Einlesen der Dateinamen
- Öffnen des Makros, welches nach dem Datum sortiert
Diese Reihenfolge funktioniert für meine Zwecke jedoch nicht, da ich noch andere Dinge wie z.B. Kommentare manuell und nicht automatisch eingebe, was logischerweise nicht anders geht. Dadurch werden meine Daten durcheinander gewürfelt. Etwas kompliziert. Jedenfalls habe ich diesen Plan jetzt verworfen und möchte es wie eingangs beschrieben machen.

Anzeige
AW: Ordner auslesen und aktuelle Dateinamen einlesen
08.12.2014 16:06:48
jonw
Wenn weitere Fragen sind, bitte stellen! Bin ein wenig verzweifelt. :(

Unklare Aufgabenstellung - o.w.T.
08.12.2014 17:40:07
Beverly


AW: Unklare Aufgabenstellung - o.w.T.
10.12.2014 14:44:25
jonw
Aufgabe ist folgende:
"ich möchte über ein VBA-Makro einen Ordner auslesen und die Dateinamen von aktuellen (oder neu erstellten) .gcode-Dateien mit Datum einlesen. Das Ganze soll automatisch passieren, wenn die Excel-Datei geöffnet wird."
Was ist unklar?

Anzeige
AW: Unklare Aufgabenstellung - o.w.T.
11.12.2014 14:12:57
Beverly
Hi,
ich sehe jedoch nicht, wie dies das Problem lösen soll, wenn du nachträglich Kommentare eingefügt hast und dann möglicherweise eine Datei aus dem Ordner löschst - dann stimmt die Reihenfolge doch auch nicht und die Kommentare stehen an anderer Stelle.
Beim normalen Sortieren im Tabellenblatt werden Kommentar übrigens mitsortiert - man muss natürlich alle relevanten Spalten in die Sortierung einbeziehen.


Anzeige
AW: Unklare Aufgabenstellung - o.w.T.
12.12.2014 10:08:56
jonw
Hallo Beverly,
es gibt keinen Grund dafür, dass die Dateien gelöscht werden sollten.
Ich kann es leider nicht besser erklären, als in meinen vorherigen Posts. Ich habe alle relevanten Spalten in die Sortierung einbezogen. Jedoch funktioniert die oben angegebene Reihenfolge nicht, sofern man Dinge (z.B. Kommentare) manuell einfügt. Sie funktioniert nur, wenn alle Daten automatisch eingefügt werden.

Anzeige
AW: Unklare Aufgabenstellung - o.w.T.
12.12.2014 10:32:18
Beverly
Hi,
ich habe es gerade nocheinmal mit Excel2010 gestestet - eingefügte Kommentare werden auch in dieser Version korrekt mit ihren zugehörigen Zellen mitsortiert.


;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Dateinamen aus einem Ordner mit Excel einlesen


Schritt-für-Schritt-Anleitung

Um die Dateinamen aus einem Ordner in Excel auszulesen, kannst du ein VBA-Makro verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung, um dies zu erreichen:

  1. Öffne Excel und gehe zu Entwicklertools > Visual Basic, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (dein Arbeitsbuch)" > Einfügen > Modul.

  3. Kopiere den folgenden Code in das Modul:

    Option Explicit
    Option Base 1
    
    Sub DateienMitDoc()
       Dim FPath As String
       Dim FEndung As String
       Dim FName As String
       Dim DateiNamen() As String
       Dim DateiDatum() As String
       Dim X As Long
       Dim I As Long
       On Error GoTo ENDE
    
       FPath = (Application.ThisWorkbook.Path & "\") ' Pfad der Suche angeben
       FEndung = "*.gcode" ' Dateiendung für Suche festlegen
       X = 1
       ReDim Preserve DateiNamen(X)
       ReDim Preserve DateiDatum(X)
    
       FName = Dir(FPath & FEndung)
       DateiNamen(X) = FName
       DateiDatum(X) = FileErstDatum(FPath & FName)
    
       FName = Dir
       DateiDatum(X) = Format(DateiDatum(X), "dd.mm.yyyy")
    
       Do While FName <> ""
           X = X + 1
           ReDim Preserve DateiNamen(X)
           ReDim Preserve DateiDatum(X)
           DateiNamen(X) = FName
           DateiDatum(X) = FileErstDatum(FPath & FName)
           DateiDatum(X) = Format(DateiDatum(X), "dd.mm.yyyy")
           FName = Dir
       Loop
    
       For I = 1 To X
           ActiveSheet.Range("B3:B1000000").Cells(I).Value = DateiNamen(I)
           ActiveSheet.Range("C3:C1000000").Cells(I).Value = DateiDatum(I)
       Next
       Exit Sub
    
    ENDE: MsgBox "Fehler aufgetreten"
    End Sub
    
    Function FileErstDatum(DATEI) As String
       FileErstDatum = CreateObject("Scripting.FileSystemObject").GetFile(DATEI).DateCreated
    End Function
  4. Speichere dein Makro und schließe den VBA-Editor.

  5. Führe das Makro aus: Gehe zurück zu Excel und drücke Alt + F8, wähle DateienMitDoc und klicke auf Ausführen.

Jetzt solltest du die Dateinamen aus dem angegebenen Ordner in den Zellen B3 und C3 einlesen können.


Häufige Fehler und Lösungen

  • Fehler: "Fehler aufgetreten"

    • Lösung: Überprüfe den Pfad und stelle sicher, dass der Ordner tatsächlich .gcode-Dateien enthält.
  • Dateinamen erscheinen nicht in der richtigen Reihenfolge

    • Lösung: Sortiere die Daten in Excel nach der Datumsspalte, um die neuesten Dateien anzuzeigen.
  • VBA-Makro funktioniert nicht

    • Lösung: Stelle sicher, dass die Makros in Excel aktiviert sind (unter Datei > Optionen > Sicherheit).

Alternative Methoden

Wenn du die Dateinamen aus einem Ordner ohne VBA einlesen möchtest, kannst du auch die Funktion =DATEIEN() verwenden, wenn du Excel 365 hast:

  1. Gehe zu einer Zelle, in die du die Dateinamen einfügen möchtest.
  2. Gib die Formel ein: =FILTER(DATEIEN("C:\Pfad\zu\deinem\Ordner\*.gcode"), DATEIEN("C:\Pfad\zu\deinem\Ordner\*.gcode")<>"").

Das wird alle .gcode-Dateien auflisten.


Praktische Beispiele

  • Beispiel 1: Um alle .gcode-Dateinamen in einem bestimmten Ordner auszulesen, ändere die FPath-Variable im VBA-Code auf den gewünschten Ordnerpfad.

  • Beispiel 2: Wenn du nur die neuesten Dateien anzeigen möchtest, kannst du die Daten nach dem Datum filtern, das im Array gespeichert wird.


Tipps für Profis

  • Verwende Application.ScreenUpdating = False zu Beginn des Makros und Application.ScreenUpdating = True am Ende, um die Ausführung zu beschleunigen.
  • Erstelle eine Fehlerbehandlungsroutine, um spezifische Fehler zu identifizieren und Meldungen auszugeben, die dem Benutzer helfen, das Problem zu verstehen.
  • Nutze die FileSystemObject-Bibliothek für erweiterte Dateiverwaltung und -operationen.

FAQ: Häufige Fragen

1. Kann ich dateinamen aus ordner auslesen ohne VBA? Ja, du kannst die =DATEIEN()-Funktion in Excel 365 verwenden, um Dateinamen ohne VBA auszulesen.

2. Wie kann ich die Dateinamen nach dem Erstellungsdatum sortieren? Du kannst die Daten nach der Datumsspalte in Excel sortieren, nachdem du sie eingelesen hast. Wähle die Spalte aus und gehe zu Daten > Sortieren.

3. Was ist der Unterschied zwischen Dir und FileSystemObject? Dir ist eine einfachere Methode, um Dateien in VBA zu durchsuchen, während FileSystemObject umfangreichere Funktionen zur Dateiverwaltung bietet.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige