我有一个列表框,显示文件夹 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
访问文件属性,例如:GetExtensionName
、DateCreated
和Name
。 - 使用
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/