我有一个列表框,显示文件夹中的XLSM文件。Archive
和PDF文件,从一个名为 PDF
在XLSM主文件的文件夹中。Main
.
C:\Main\Archive\
, C:\Main\PDF\
,XLSM查找这些项目的位置在根目录下。C:\Main\
我想按降序显示最近修改的文件。
因此,如果一个文件是今天创建的,它将显示在顶部,然后是昨天创建的文件,以此类推。
我的代码只是标准的AddItem to ListBox1
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
递增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