Excel 在列表框中列出文件夹中的文件,最新文件首先显示
我有一个列表框,用于显示文件夹Excel 在列表框中列出文件夹中的文件,最新文件首先显示,excel,vba,Excel,Vba,我有一个列表框,用于显示文件夹Archive中的XLSM文件和主XLSM文件main文件夹中名为PDF的PDF文件 C:\Main\Archive\,C:\Main\PDF\,查找这些项目的XLSM位于根文件夹C:\Main\ 我想按降序显示最近修改的文件 因此,如果今天创建了一个文件,它将显示在顶部,然后是昨天创建的文件,依此类推 我的代码只是ListBox1的标准附加项 MyFile = Dir(MyFolder & "\*.xlsm") Do While MyFile <&g
Archive
中的XLSM文件和主XLSM文件main
文件夹中名为PDF
的PDF文件
C:\Main\Archive\
,C:\Main\PDF\
,查找这些项目的XLSM位于根文件夹C:\Main\
我想按降序显示最近修改的文件
因此,如果今天创建了一个文件,它将显示在顶部,然后是昨天创建的文件,依此类推
我的代码只是ListBox1的标准附加项
MyFile = Dir(MyFolder & "\*.xlsm")
Do While MyFile <> ""
ListBox1.AddItem MyFile
MyFile = Dir
Loop
这就是名称在列表框中的显示方式。PDF是相同的名称
谢谢你抽出时间 为了支持我的评论,像这样的东西可以帮助您从文件名中获取日期。然后可以使用Excel对此进行排序
Sub testing()
Debug.Print get_date("FSO 10333 Co Name Job Type 042220.xlsm")
End Sub
Function get_date(strInput As String) As Date
Dim lngLength As Long
Dim lngLastSpace As Long
Dim strEndSection As String
lngLength = Len(strInput)
lngLastSpace = InStrRev(strInput, " ")
strEndSection = Mid(strInput, lngLastSpace)
strEndSection = Trim(Split(strEndSection, ".")(0)) ' The date bit
get_date = DateSerial(Mid(strEndSection, 5, 2), _
Mid(strEndSection, 1, 2), _
Mid(strEndSection, 3, 2))
End Function
那么以下内容呢:
- 使用
访问文件属性,如:FileSystemObject
、GetExtensionName
和DateCreated
Name
- 使用
对象创建库并将值存储在内存中字典
- 使用
对象创建一个列表来存储创建时间日期值,然后我们可以ArrayList
和对其进行升序排序
来创建降序列表反向排序
- 然后,我们可以迭代
,从ArrayList
,并按顺序将它们添加到字典中返回值
列表框中李>
它还可以从最高的“票证号”开始显示,从那里开始递减。最好将文件夹信息放在一张表中,拆分文件名,在此基础上排序,然后将排序后的VAL放回
Sub testing()
Debug.Print get_date("FSO 10333 Co Name Job Type 042220.xlsm")
End Sub
Function get_date(strInput As String) As Date
Dim lngLength As Long
Dim lngLastSpace As Long
Dim strEndSection As String
lngLength = Len(strInput)
lngLastSpace = InStrRev(strInput, " ")
strEndSection = Mid(strInput, lngLastSpace)
strEndSection = Trim(Split(strEndSection, ".")(0)) ' The date bit
get_date = DateSerial(Mid(strEndSection, 5, 2), _
Mid(strEndSection, 1, 2), _
Mid(strEndSection, 3, 2))
End Function
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