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
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
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