as theo said this isn't going to be elegant but hey its api.
Okay here we go,
First put all the items into an array with this:
Private 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
Const MAX_PATH = 260
Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
Private 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 * MAX_PATH
cAlternate As String * 14
End Type
' Returns a one-based string array containing the files (or directories)
' located in the specified path
'
' the Path argument can contain wildcards, e.g. "C:\*.doc"
Function FilesToArray(ByVal Path As String, Optional ByVal IncludeDirs As _
Boolean) As String()
Dim lRet As Long
Dim handle As Long
Dim FindData As WIN32_FIND_DATA
Dim FileName As String
Dim fileCount As Long
Dim ok As Boolean
ReDim res(0) As String
' start the searching, exit if no file matches the spec
handle = FindFirstFile(Path, FindData)
If handle < 0 Then
FilesToArray = res()
Exit Function
End If
Do
' get this entry's name
FileName = Left$(FindData.cFileName, InStr(FindData.cFileName, _
vbNullChar) - 1)
If (FindData.dwFileAttributes And vbDirectory) = 0 Then
' this is a file
ok = Not IncludeDirs
ElseIf FileName <> "." And FileName <> ".." Then
' this is a directory, but not a ./.. entry
ok = IncludeDirs
Else
' this is a ./.. entry
ok = False
End If
If ok Then
' add this entry to the result
fileCount = fileCount + 1
If fileCount > UBound(res) Then
' make room in the array if necessary
ReDim Preserve res(fileCount + 100) As String
End If
res(fileCount) = FileName
End If
' read the next file, returns zero when there are no more files
lRet = FindNextFile(handle, FindData)
Loop While lRet
' stop enumeration
FindClose handle
' discard unused array items and return to caller
ReDim Preserve res(0 To fileCount) As String
FilesToArray = res
End Function
Then use a for loop to go through each one checking its time with the FileDate Function.
This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
By continuing to use this site, you are consenting to our use of cookies.