ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: taller

[原创]文件时间修改工具

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2015-8-4 09:25 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖已被收录到知识树中,索引项:文件操作和FSO
实用工具,感谢分享

TA的精华主题

TA的得分主题

发表于 2017-9-14 08:54 | 显示全部楼层
本帖最后由 niko88819 于 2017-9-14 11:34 编辑

小师妹好想学习版主代码?出现文件代码损失,谁能帮忙,感恩加感谢,请把代码及文传到信箱,谢谢了!
bk.gif

TA的精华主题

TA的得分主题

发表于 2017-9-14 15:43 | 显示全部楼层
niko88819 发表于 2017-9-14 08:54
小师妹好想学习版主代码?出现文件代码损失,谁能帮忙,感恩加感谢,请把代码及文传到信箱,谢谢了!

请小师妹查收附件

文件时间修改工具(英文).zip

230.99 KB, 下载次数: 32

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2017-9-14 19:36 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
多谢大师兄,还是出现楼上情形耶,代码遗失了

TA的精华主题

TA的得分主题

发表于 2017-9-14 21:52 来自手机 | 显示全部楼层
niko88819 发表于 2017-9-14 19:36
多谢大师兄,还是出现楼上情形耶,代码遗失了

也许窗体上有中文没有改到

TA的精华主题

TA的得分主题

发表于 2017-9-14 23:09 | 显示全部楼层
niko88819 发表于 2017-9-14 19:36
多谢大师兄,还是出现楼上情形耶,代码遗失了

请小师妹再次测试一下,见附件
窗体_英文1.jpg
窗体_英文2.jpg
窗体_中文1.jpg
窗体_中文2.jpg

文件时间修改工具(英).zip

319.21 KB, 下载次数: 28

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2017-9-15 09:06 | 显示全部楼层
本帖最后由 zopey 于 2017-9-15 16:01 编辑

'*********************************************************
'**             文件时间修改工具 V1.0                   ***
'**               taller@excelhome.net                     ***
'**                               2007.2.14                      ***
'*********************************************************

Option Explicit
Public Const OFS_MAXPATHNAME = 260
Public Const OF_READWRITE = &H2
Public Type OFSTRUCT
    cBytes As Byte
    fFixedDisk As Byte
    nErrCode As Integer
    Reserved1 As Integer
    Reserved2 As Integer
    szPathName(OFS_MAXPATHNAME) As Byte
End Type
Public Type FILETIME
    dwLowDateTime As Long
    dwHighDateTime As Long
End Type
Public 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
Private Declare Function GetFileTime Lib "kernel32" (ByVal hFile As Long, lpCreationTime As FILETIME, lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME) As Long
Private Declare Function SetFileTime Lib "kernel32" (ByVal hFile As Long, lpCreationTime As FILETIME, lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME) As Long
Private Declare Function SystemTimeToFileTime Lib "kernel32" (lpSystemTime As SYSTEMTIME, lpFileTime As FILETIME) As Long
Private Declare Function LocalFileTimeToFileTime Lib "kernel32" (lpLocalFileTime As FILETIME, lpFileTime As FILETIME) As Long
Private Declare Function FileTimeToSystemTime Lib "kernel32" (lpFileTime As FILETIME, lpSystemTime As SYSTEMTIME) As Long
Private Declare Function FileTimeToLocalFileTime Lib "kernel32" (lpFileTime As FILETIME, lpLocalFileTime As FILETIME) As Long
Private Declare Function OpenFile Lib "kernel32" (ByVal lpFileName As String, lpReOpenBuff As OFSTRUCT, ByVal wStyle As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hFile As Long) As Long
Sub ModifyFileTime(iTime As Date, iFile As String, Optional mSec As String = 0)
    Dim hFile As Long
    Dim OFS As OFSTRUCT
    Dim NEW_TIME As FILETIME, LOC_TIME As FILETIME
    Dim SYS_TIME As SYSTEMTIME
    With SYS_TIME
        .wYear = VBA.Year(iTime)
        .wMonth = VBA.Month(iTime)
        .wDay = VBA.Day(iTime)
        .wDayOfWeek = VBA.Weekday(iTime) - 1
        .wHour = VBA.Hour(iTime)
        .wMilliseconds = CInt(mSec)
        .wMinute = VBA.Minute(iTime)
        .wSecond = VBA.Second(iTime)
    End With
    Call SystemTimeToFileTime(SYS_TIME, LOC_TIME)
    Call LocalFileTimeToFileTime(LOC_TIME, NEW_TIME)
    hFile = OpenFile(iFile, OFS, OF_READWRITE)
    Call SetFileTime(hFile, NEW_TIME, NEW_TIME, NEW_TIME)
    CloseHandle hFile
End Sub
Function ReadFileTime(iFile As String) As String
    Dim Ft1 As FILETIME, Ft2 As FILETIME, SysTime As SYSTEMTIME
    Dim hFile As Long
    Dim OFS As OFSTRUCT
    hFile = OpenFile(iFile, OFS, OF_READWRITE)
    GetFileTime hFile, Ft1, Ft1, Ft2
    FileTimeToLocalFileTime Ft2, Ft1
    FileTimeToSystemTime Ft1, SysTime
    ReadFileTime = CDate(VBA.DateSerial(SysTime.wYear, SysTime.wMonth, SysTime.wDay) & " " & _
           VBA.TimeSerial(SysTime.wHour, SysTime.wMinute, SysTime.wSecond)) & "." & SysTime.wMilliseconds
    CloseHandle hFile
End Function
Function ListAllFile(iPath As String, srcSubFolder As Boolean)
    Dim FileName(), i As Integer
    With Application.FileSearch
        .NewSearch
        .LookIn = iPath
        .SearchSubFolders = srcSubFolder
        .FileName = "*.*"
        .MatchTextExactly = True
        .FileType = msoFileTypeAllFiles
        If .Execute() > 0 Then
            ReDim FileName(1 To .FoundFiles.Count)
            For i = 1 To .FoundFiles.Count
                FileName(i) = .FoundFiles(i)
            Next i
            ListAllFile = FileName()
        Else
            ListAllFile = ""
        End If
    End With
End Function

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-9-26 14:29 | 显示全部楼层
先收藏起来。希望能用上。

TA的精华主题

TA的得分主题

发表于 2020-8-1 21:53 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2020-11-19 18:10 | 显示全部楼层
zopey 发表于 2017-9-15 09:06
'*********************************************************
'**             文件时间修改工具 V1.0    ...

taller版主的这个小程序只能对文件修改时间,而不能对文件夹进行修改。关键原因在于所使用的打开API函数不对。

应当使用CreateFile函数而不是OpenFile函数。
CreateFile函数,可以打开已经存在的文件和文件夹,以便用其它API函数修改其创建时间等属性。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-17 22:19 , Processed in 0.037499 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表