Hallo,
das ist prinzipell erst mal ne clevere Idee sich die Verzeichnisliste über ein Dos-Befehl zu erstellen.
Allerdings gibst du beim Schreiben der Liste
Print #1, "dir /b /on " & Pfad & "\*." & Format & " >>" & Pfad & "\Inhalt.txt"
an dass nur die Namen ausgegeben werden sollen.
Das ist dann das "/b" nach "dir"
Es geht leider nicht dann auch noch die Datums auszugeben.
Wenn du aber das "/b" weg läßt steht mehr in der Datei und lässt sich nicht mehr so einfach einlesen
Ich habe mir vor ein paar Jahren auch was zum einlesen von Musikdateien gemacht, und um ein Inhaltsverzeichnis zu bekommen.
Daraus habe ich dir mal was zusammengestellt.
Ausserdim schau auch mal hier: http://www.herber.de/forum/archiv/636to640/637199_Dateisuche_mit_VBA.html#637199
Option Explicit
Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * 260
cAlternate As String * 14
End Type
Private Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type
Declare Function FileTimeToLocalFileTime Lib "kernel32" (lpFileTime As FILETIME, lpLocalFileTime As FILETIME) As Long
Private Declare Function FileTimeToSystemTime Lib "kernel32" (lpFileTime As FILETIME, lpSystemTime As SYSTEMTIME) As Long
Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long
'Private CompareCase As Long
Const maxlong As Double = 2147483647
Const INVALID_HANDLE_VALUE = -1
Public Sub t()
Dim WFD As WIN32_FIND_DATA
Dim ft As FILETIME
Dim st As SYSTEMTIME
Dim FHandle As Long
Dim ResL As Long
Dim FN As String
Dim i As Integer
Dim d As Double
Dim datum As Date
'anzv = 0
Range("A1:C65536").ClearContents
FHandle = FindFirstFile("C:\tmp\*.*", WFD)
ResL = FHandle
If ResL <> INVALID_HANDLE_VALUE Then
Do While ResL <> 0
i = i + 1
FN = ZTrim$(WFD.cFileName)
FileTimeToLocalFileTime WFD.ftLastWriteTime, ft
FileTimeToSystemTime ft, st
Cells(i, 1) = FN
Cells(i, 2) = DateSerial(st.wYear, st.wMonth, st.wDay)
Cells(i, 3) = TimeSerial(st.wHour, st.wMinute, st.wSecond)
ResL = FindNextFile(FHandle, WFD)
Loop
End If
ResL = FindClose(FHandle)
End Sub
Public Function ZTrim$(s As String)
ZTrim = Left(s, InStr(1, s, Chr(0)) - 1)
End Function
|