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
FDate=FileDateTime (Verzeichnis & FileName)
ermittelt und dann musst Du
Fdate > CDate(Tabelle1.Range("...").Value)
vergleichen und dann laden oder next.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
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
Um ein Verzeichnis ab einem bestimmten Datum auszulesen und die Dateinamen in ein Excel-Blatt zu übertragen, kannst du den folgenden VBA-Code verwenden:
ALT + F11, um den VBA-Editor zu öffnen.Einfügen > Modul).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
ALT + F8 und wähle VerzeichnisAbDatumAuslesen).Fehler: "Typen unverträglich"
Fehler: "Objekt nicht gefunden"
Fehler: "Zugriff verweigert"
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.
If Right(objDatei.Name, 4) = ".jpg" Or Right(objDatei.Name, 4) = ".png" Then
' ... den Rest des Codes
End If
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
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.