ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的酷贴 > Excel VBA > 用API获取文件创建时间、最后修改时间、最后访问时间

用API获取文件创建时间、最后修改时间、最后访问时间

作者:绿色风 分类: 时间:2022-08-18 浏览:150
楼主
amulee
没用过不知道,API中获取这些时间有这么多讲究。
在API文件查找的那个帖子里可以获取这些类型为FILETIME的时间。
这个FILETIME类型的属性得到的是两串看不懂的数字,还必须使用FileTimeToSystemTime函数转换后才行。

代码如下:
  1. Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
  2. Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long
  3. Private Declare Function FileTimeToLocalFileTime Lib "kernel32" (lpFileTime As FILETIME, lpLocalFileTime As FILETIME) As Long
  4. Private Declare Function FileTimeToSystemTime Lib "kernel32" (lpFileTime As FILETIME, lpSystemTime As SYSTEMTIME) As Long
  5. '文件结构
  6. Type FILETIME
  7.     dwLowDateTime As Long
  8.     dwHighDateTime As Long
  9. End Type
  10. Type WIN32_FIND_DATA
  11.     dwFileAttributes As Long
  12.     ftCreationTime As FILETIME
  13.     ftLastAccessTime As FILETIME
  14.     ftLastWriteTime As FILETIME
  15.     nFileSizeHigh As Long
  16.     nFileSizeLow As Long
  17.     dwReserved0 As Long
  18.     dwReserved1 As Long
  19.     cFileName As String * 255
  20.     cAlternate As String * 14
  21. End Type
  22. Private Type SYSTEMTIME
  23.     wYear As Integer
  24.     wMonth As Integer
  25.     wDayOfWeek As Integer
  26.     wDay As Integer
  27.     wHour As Integer
  28.     wMinute As Integer
  29.     wSecond As Integer
  30.     wMilliseconds As Integer
  31. End Type
  32. Sub Test()
  33.     Dim FindData As WIN32_FIND_DATA
  34.     Dim CTime1 As FILETIME, LATime1 As FILETIME, LWTime1 As FILETIME
  35.     Dim CTime2 As SYSTEMTIME, LATime2 As SYSTEMTIME, LWTime2 As SYSTEMTIME
  36.     Dim FileHandle As Long
  37.     Dim TimeHandle As Long
  38.     Dim FPath As String
  39.     Dim StrA As String
  40.     FPath = ThisWorkbook.FullName
  41.     '开始API查找,获取文件信息
  42.     FileHandle = FindFirstFile(FPath, FindData)
  43.     FindClose FileHandle
  44.     '先将时间转换为本地时间
  45.     FileTimeToLocalFileTime FindData.ftCreationTime, CTime1
  46.     FileTimeToLocalFileTime FindData.ftLastAccessTime, LATime1
  47.     FileTimeToLocalFileTime FindData.ftLastWriteTime, LWTime1
  48.     '再将时间转换为标准系统时间
  49.     FileTimeToSystemTime CTime1, CTime2
  50.     FileTimeToSystemTime LATime1, LATime2
  51.     FileTimeToSystemTime LWTime1, LWTime2
  52.     '转换成字符串
  53.     StrA = "本文件创建时间为:" & CTime2.wYear & "年" & CTime2.wMonth & "月" & CTime2.wDay & "日" & CTime2.wHour & "时" & CTime2.wMinute & "分" & CTime2.wSecond & "秒" & vbCrLf & _
  54.          "最后修改时间为  :" & LWTime2.wYear & "年" & LWTime2.wMonth & "月" & LWTime2.wDay & "日" & LWTime2.wHour & "时" & LWTime2.wMinute & "分" & LWTime2.wSecond & "秒" & vbCrLf & _
  55.          "最后访问时间为  :" & LATime2.wYear & "年" & LATime2.wMonth & "月" & LATime2.wDay & "日" & LATime2.wHour & "时" & LATime2.wMinute & "分" & LATime2.wSecond & "秒"
  56.     MsgBox StrA
  57. End Sub



API获取文件创建时间、最后修改时间、最后访问时间.rar
2楼
rongjun
学习了!

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap