ich möchte rekursiv aus einer Liste von Verzeichnissen (die ich in der Excel-Tabelle eingegeben habe) auslesen und alle Dateien, die nach einem bestimmten Datum geändert wurden in einem 2. Tabellenblatt ausgeben.
Ich habe mir schon folgenden Code zusammengebaut, der aber leider nicht die Dateien, die in den Unterverzeichnissen beinhaltet sind berücksichtigt. Was mache ich verkehrt?
Hier mein Code:
Option Compare Text
Public datum As Date, pfad, vz_alt, zz
Private Sub CommandButton1_Click()
Dim s As Long
datum = Range("D2")
von = Range("D5")
bis = Range("D7")
Sheets("tab2").Cells.ClearContents
zz = 1
For nr = von + 1 To bis + 1
vz_alt = (Range("B" & nr))
pfad = ""
ebene = 0
i_alt = ""
Call Verzeichnis(vz_alt)
Next nr
End Sub
Function Verzeichnis(ByVal pfad$)
Dim i&, verznr&, verzmax&, vrz$(), dat$, fs, f, s
Dim checkd As Date
verzmax = 20: ReDim vrz(verzmax)
If pfad = "" Then pfad = CurDir()
dat = Dir(pfad, 0 + 1 + 2 + 4 + 16)
Do While dat ""
If dat "." And dat ".." Then
test = GetAttr(pfad & dat)
If GetAttr(pfad & dat) 16 And GetAttr(pfad & dat) 17 And GetAttr(pfad & dat) 8208 And GetAttr(pfad & dat) 8209 Then
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFile(pfad & dat)
checkd = Left(f.DateLastModified, 10)
If checkd >= datum Then
Sheets("tab2").Range("A" & zz) = pfad & dat
Sheets("tab2").Range("B" & zz) = checkd
zz = zz + 1
'copy noch einbauen
End If
Else 'Verzeichnis
vrz(verznr) = dat: verznr = verznr + 1
If verznr > verzmax Then
verzmax = verzmax + 20: ReDim Preserve vrz(verzmax)
End If
End If
End If
dat = Dir()
Loop
' Unterverzeichnisse rekursiv durcharbeiten
For i = 0 To verznr - 1
Verzeichnis (vrz(i))
Next i
Verzeichnis = 0
End Function
Vielen Dank für Euere Hilfe! Klaus