You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求修改VBA程序:按修改日期排序文件后输出至Excel

按修改日期排序后输出文件名的VBA代码

没问题,我来帮你调整这段VBA代码,实现按文件修改日期(和资源管理器排序逻辑一致)排序后,再把文件名输出到Excel工作表里。

修改后的完整代码

Sub HGDW_PrintFiles_Sorted()
    Dim objFSO As Object
    Dim objFolder As Object
    Dim objFile As Object
    Dim i As Integer, j As Integer
    Dim fileData() As Variant ' 用于存储文件名和修改日期的数组
    Dim tempData As Variant
    
    ' 创建FileSystemObject对象
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    ' 获取目标文件夹对象
    Set objFolder = objFSO.Getfolder("C:\Users\bf91955\Desktop\Test\")
    
    ' 根据文件数量初始化数组
    ReDim fileData(1 To objFolder.Files.Count, 1 To 2)
    
    i = 1
    ' 遍历文件夹,将文件名和修改日期存入数组
    For Each objFile In objFolder.Files
        fileData(i, 1) = objFile.Name ' 第一列存文件名
        fileData(i, 2) = objFile.DateLastModified ' 第二列存修改日期
        i = i + 1
    Next objFile
    
    ' 冒泡排序:按修改日期升序排列(如果要降序,把>改成<即可)
    For i = LBound(fileData, 1) To UBound(fileData, 1) - 1
        For j = i + 1 To UBound(fileData, 1)
            If fileData(i, 2) > fileData(j, 2) Then
                tempData = fileData(i, :)
                fileData(i, :) = fileData(j, :)
                fileData(j, :) = tempData
            End If
        Next j
    Next i
    
    ' 将排序后的文件名输出到工作表
    i = 1
    For Each tempData In fileData
        Cells(i, 1) = tempData(1)
        i = i + 1
    Next tempData
    
    ' 释放对象
    Set objFile = Nothing
    Set objFolder = Nothing
    Set objFSO = Nothing
End Sub

关键改动说明

  • 新增了fileData数组,用来同时存储每个文件的文件名和修改日期,这样排序时能保证名称和日期的关联关系不混乱。
  • 加入了冒泡排序逻辑:默认是按修改日期升序排列(最早修改的文件在前),如果想要和资源管理器里“修改日期降序”(最新修改的在前)一致,只需要把排序判断里的>改成<就行。
  • 最后遍历排序后的数组,把文件名输出到A列,保证顺序是按修改日期排好的。

小提示

如果你的文件夹里文件数量特别多(比如上千个),冒泡排序效率会稍低,这时候可以换成更高效的排序算法(比如快速排序),但日常使用冒泡排序完全足够啦。

内容的提问来源于stack exchange,提问作者Rhyfelwr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:24:39