Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Verzeichnis auslesen ab Datum

Verzeichnis auslesen ab Datum
06.11.2020 14:46:31
Stefan
Hallo Zusammen, ich habe folgendes Problem. Ich lese ein Verzeichnis aus, in dem ca. 2000 Dateien stehen und übertrage die Dateinamen in ein Excelblatt. Danach suche ich nach bestimmten Dateien mit unterschiedlichen Dateinamen (die ersten 10 Ziffern sind gleich). Da Auslesedatum und die Uhrzeit speichere ich mir weg. Jetzt kommen im Laufe der Zeit neue Dateien hinzu, die ich gerne nachladen möchte.
Gibt es einen Befehl, mit dem ich nur Dateien lade (suche und in ein Blatt speichere) ab einem bestimmten Anlagedatum/Änderungsdatum? Sonst müsste ich jedes Mal das komplette Verzeichnis wieder auslesen.
Vielen Dank im Voraus.
Stefan
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Verzeichnis auslesen ab Datum
06.11.2020 16:06:59
Armin
Hallo Stefan,
Dazu musst Du selbst eine Function bauen. Das Filedatum + Uhrzeit wird mit
FDate=FileDateTime (Verzeichnis & FileName)
ermittelt und dann musst Du
Fdate > CDate(Tabelle1.Range("...").Value)
vergleichen und dann laden oder next.
Gruß Armin
Anzeige
AW: Verzeichnis auslesen ab Datum
06.11.2020 16:35:31
Stefan
Hallo Armin, vielen Dank für deine Antwort. Vielleicht habe ich es falsch beschrieben, also mit
Dim objFileSystem As Object
Dim objVerzeichnis As Object
Dim objDateienliste As Object
Dim objDatei As Object
Dim strRootPath As String
Set objFileSystem = CreateObject("scripting.FileSystemObject")
Set objVerzeichnis = objFileSystem.GetFolder(strRootPath)
Set objDateienliste = objVerzeichnis.Files
lngZeile = 1
For Each objDatei In objDateienliste
If Not objDatei Is Nothing Then
ActiveSheet.Cells(lngZeile, 1) = objDatei.Name
lngZeile = lngZeile + 1
End If
Next objDatei
lese ich das Verzeichnis aus und speichere das Datum von heute weg. Morgen möchte über eine Schaltfläche die neuen und geänderten Dateien auslesen und zur Liste hinzufügen.
Also bei dem Befehl "For Each objDatei In objDateienliste" das Anlagedatum bzw. Änderungsdatum direkt mit abfragen (bei SQL WHERE Anlagedatum größer Datum).
Danke Stefan
Anzeige
AW: Verzeichnis auslesen ab Datum
06.11.2020 18:55:20
Armin
Hallo Stefan,
Ok, das kannst Du natürlich mit dem .FileSystemObject abfragen. In Deinem Code ein weiteres Objekt einfügen und dieses bei jedem Dirchlauf setzen (Set).
For Each objDatei In objDateienliste
If Not objDatei Is Nothing Then
Set objDateiEigenschaft = objFileSystem.GetFile(objDatei)
If CDate(objDateiEigenschaft.DateCreated) > CDate(Systendatum) Then
ActiveSheet.Cells(L, 1) = objDatei.Name
ActiveSheet.Cells(L, 2) = objDateiEigenschaft.DateCreated

Das Objekt objDateiEigenschaft.DateCreated gibt das File-Datum +Time zurück. Wenn man das vergleicht mit einem Datum + Time kann man ein verabeiten aus- oder einschließen.
Beachte das ein einfacher vergleich der vorhanden Einträge Zeilenweise nicht funktioniert! Die Neuen Einträge würde ich am Ende der Liste anfügen und gegebenenfalls sortieren.
Ich hoffe Du kommst klar.
Gruß Armin
Anzeige
AW: Verzeichnis auslesen ab Datum
06.11.2020 17:44:49
volti
Hallo Stefan,
hier eine Idee zu Deinem Anliegen. Das Feld für das Abfragedatum bitte noch anpassen....
Code:
[Cc]

Sub Test() Dim strRootPath As String Dim lngZeile As Long Dim ObjDatei As Object strRootPath = "D:\Pictures" lngZeile = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row + 1 With CreateObject("scripting.FileSystemObject").GetFolder(strRootPath) For Each ObjDatei In .Files If Not ObjDatei Is Nothing Then If FileDateTime(ObjDatei.Path) > CDate(Range("A1").Value) Then ActiveSheet.Cells(lngZeile, 1) = ObjDatei.Name 'ObjDatei.Path lngZeile = lngZeile + 1 End If End If Next ObjDatei End With End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige
AW: Verzeichnis auslesen ab Datum
06.11.2020 21:49:05
Stefan
Hallo Karl-Heinz,
vielen Dank für deine Lösung. Ich habe sie in mein Programm eingebaut und getestet.
Es hat funktioniert, hat aber leider länger gedauert als das normale auslesen, da noch eine zusätzliche Abfrage mit eingebaut wurde.
Da muss ich mir eine andere Lösung einfallen lassen. trotzdem vielen Dank.
Gruß aus Münster
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Verzeichnis ab Datum auslesen in Excel


Schritt-für-Schritt-Anleitung

Um ein Verzeichnis ab einem bestimmten Datum auszulesen und die Dateinamen in ein Excel-Blatt zu übertragen, kannst du den folgenden VBA-Code verwenden:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu (Einfügen > Modul).
  3. Kopiere und füge den folgenden Code in das Modul ein:
Sub VerzeichnisAbDatumAuslesen()
    Dim strRootPath As String
    Dim lngZeile As Long
    Dim objDatei As Object
    Dim objFileSystem As Object
    Dim objVerzeichnis As Object

    ' Setze den Pfad zum Verzeichnis
    strRootPath = "D:\DeinVerzeichnis"

    ' Initialisiere FileSystemObject
    Set objFileSystem = CreateObject("Scripting.FileSystemObject")
    Set objVerzeichnis = objFileSystem.GetFolder(strRootPath)

    ' Starte in Zeile 1
    lngZeile = 1

    ' Durchlaufe alle Dateien im Verzeichnis
    For Each objDatei In objVerzeichnis.Files
        If Not objDatei Is Nothing Then
            ' Überprüfe das Änderungsdatum
            If FileDateTime(objDatei.Path) > CDate(Range("A1").Value) Then
                ActiveSheet.Cells(lngZeile, 1) = objDatei.Name
                lngZeile = lngZeile + 1
            End If
        End If
    Next objDatei
End Sub
  1. Stelle sicher, dass in Zelle A1 das Datum steht, ab dem du die Dateien suchen möchtest.
  2. Schließe den VBA-Editor und führe das Makro aus (ALT + F8 und wähle VerzeichnisAbDatumAuslesen).

Häufige Fehler und Lösungen

  • Fehler: "Typen unverträglich"

    • Ursache: Stelle sicher, dass das Datum in Zelle A1 korrekt formatiert ist. Es sollte als Datum und nicht als Text eingegeben werden.
  • Fehler: "Objekt nicht gefunden"

    • Ursache: Überprüfe, ob der angegebene Verzeichnispfad korrekt ist.
  • Fehler: "Zugriff verweigert"

    • Ursache: Möglicherweise sind die Berechtigungen für das Verzeichnis nicht ausreichend. Stelle sicher, dass du die richtigen Zugriffsrechte hast.

Alternative Methoden

Falls du keine VBA-Lösung nutzen möchtest, kannst du auch folgende Methoden verwenden:

  • Power Query: Du kannst Power Query in Excel verwenden, um Daten aus einem Verzeichnis zu importieren und nach Datum zu filtern. Dies ist eine benutzerfreundliche Methode, die keine Programmierkenntnisse erfordert.

  • Windows Explorer: Du kannst die Dateien im Windows Explorer nach dem Änderungsdatum sortieren und die gewünschten Dateien manuell in Excel einfügen.


Praktische Beispiele

  1. Verzeichnis auslesen und filtern: Wenn du eine Liste aller Bilder in einem Ordner ab einem bestimmten Datum erstellen möchtest, kannst du den oben genannten VBA-Code anpassen, um nur Dateien mit einer bestimmten Dateiendung zu erfassen:
If Right(objDatei.Name, 4) = ".jpg" Or Right(objDatei.Name, 4) = ".png" Then
    ' ... den Rest des Codes
End If
  1. Ordnerstruktur auslesen: Du kannst auch die gesamte Ordnerstruktur (Verzeichnisbaum) auslesen und in Excel darstellen, indem du eine rekursive Funktion schreibst, die auch Unterordner durchsucht.

Tipps für Profis

  • Fehlerbehandlung: Füge On Error Resume Next und On Error GoTo 0 in deinen Code ein, um Fehler beim Auslesen des Verzeichnisses elegant zu behandeln.

  • Leistungsoptimierung: Wenn du große Verzeichnisse hast, kannst du die Berechnung in Excel vorübergehend deaktivieren, um die Leistung zu verbessern:

Application.ScreenUpdating = False
' ... dein Code ...
Application.ScreenUpdating = True

FAQ: Häufige Fragen

1. Wie kann ich das Datum dynamisch ändern? Du kannst das Datum in Zelle A1 jederzeit ändern, und das Makro wird alle Dateien ab diesem Datum auslesen.

2. Funktioniert dieser Code in Excel 365? Ja, dieser VBA-Code funktioniert in Excel 365 sowie in anderen gängigen Excel-Versionen, die VBA unterstützen.

3. Kann ich auch nach Dateinamen filtern? Ja, du kannst zusätzliche Bedingungen in deinem Code hinzufügen, um nach spezifischen Dateinamen oder -mustern zu filtern.

4. Was ist, wenn ich nur bestimmte Dateitypen auslesen möchte? Du kannst den Code so anpassen, dass er nur Dateien mit bestimmten Dateiendungen (z.B. .xlsx, .docx) ausliest, indem du entsprechende Bedingungen einfügst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige