excel - 列出列表框中文件夹中的文件,首先显示最近的文件

标签 excel vba

我有一个列表框,显示文件夹 Archive 中的 XLSM 文件和主 XLSM 文件 Main< 中名为 PDF 的文件夹中的 PDF/

C:\Main\Archive\, C:\Main\PDF\,查找这些项目的 XLSM 位于根文件夹 C:\主要\

我想按降序显示最近修改的文件。

因此,如果一个文件是今天创建的,它将显示在顶部,然后是昨天创建的文件,依此类推。

我的代码只是 ListBox1 的标准 AddItem

MyFile = Dir(MyFolder & "\*.xlsm")
Do While MyFile <> ""
    ListBox1.AddItem MyFile
    MyFile = Dir
Loop

这些文件的名称也以 FSO 或 PPG 开头,后跟“票号”,例如 1031、公司名称、工作类型和简单日期。

FSO 10333 Co Name Job Type 042220.xlsm
PPG 10332 Co Name Job Type 042120.xlsm

这就是名称在列表框中的显示方式。 PDF 具有相同的名称。

感谢您的宝贵时间!

最佳答案

以下情况如何:

  • 使用 FileSystemObject 访问文件属性,例如:GetExtensionNameDateCreatedName
  • 使用 Dictionary 对象创建库并将值存储在内存中。
  • 使用ArrayList 对象创建一个列表来存储创建时间日期值,然后我们可以Sort ascending 和Reverse 创建一个降序列表.
  • 然后我们可以迭代 ArrayList 以从我们的 Dictionary 返回值,并将它们按顺序添加到 ListBox

Dim dict As Object: Set dict = CreateObject("Scripting.Dictionary")
Dim arrList As Object: Set arrList = CreateObject("System.Collections.ArrayList")
Dim FSO: Set FSO = CreateObject("scripting.FileSystemObject")
Dim oFolder, oFile

Set oFolder = FSO.getfolder(MyFolder)
For Each oFile In oFolder.Files
    If FSO.GetExtensionName(oFile) = "xlsm" Then
        dict(oFile.DateCreated) = oFile.Name
        arrList.Add oFile.DateCreated
    End If
Next

arrList.Sort
arrList.Reverse

For i = 0 To arrList.Count - 1
    ListBox1.AddItem dict(arrList(i))
Next

关于excel - 列出列表框中文件夹中的文件,首先显示最近的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61380862/

相关文章:

excel - 如何在 ODOO 上生成 excel(xls、xlsx)格式的报告?

vba - 如何在MS Access Form中显示表格中的记录数据

excel - 如何安全地从 VBA 项目中删除所有 Option Base 1 语句

vba - Excel InputBox VBA取消功能

events - 用户表单中的事件顺序

javascript - 文件格式或文件扩展名无效

arrays - 如何在 vba 数组的值之间添加空格?

vba - MS Word 中的链接表

excel - 我可以用 Excel 中的 VBA 保存功能替换 "Save"或 "Save as"按钮吗?

arrays - Excel:在用户定义的函数中传递数组?