出于我的问题和VBA代码的目的:从网络目录中的每个“ table.csv”文件中获取特定数据(几列)。每个网络目录/子文件夹01 /子文件夹02都包含一个“ table.csv”文件,但每个网络/子文件夹01中还包含100个其他子文件夹。不需要其他文件夹,我们唯一感兴趣的是每个subfolder01的subfolder02。网络目录中subfolders01的数量约为15000。但是,例如,我仅需要从2020年1月到2020年4月的subfolders01(200个子文件夹)。最终目的是趋势数据。
问题:我试图了解如何改善当前使用的VBA代码。此代码一个接一个地遍历每个子文件夹,然后检查日期和文件名。我想知道是否有一种方法可以为子文件夹的日期和名称添加任何搜索过滤条件,以加快循环速度。我们如何避免代码遍历每个子文件夹?
[请在下面查看我正在使用的代码,非常感谢您的宝贵时间,并希望我的要求清楚。
'''
Function GetFiles(startPath As String) As Collection
Dim fso As Object, rv As New Collection, colFolders As New Collection, fpath As String
Dim subFolder As Object, f, dMinfold, dtMod
Set fso = CreateObject("Scripting.FileSystemObject")
dMinfold = ThisWorkbook.Sheets("Enter_Date").Cells(2, 1)
colFolders.Add startPath
Do While colFolders.Count > 0
fpath = colFolders(1)
colFolders.Remove 1
'process subfolders
For Each subFolder In fso.getfolder(fpath).subfolders
If subFolder.DateLastModified >= dMinfold Then
colFolders.Add subFolder.Path
End If
Next subFolder
'process files
f = Dir(fso.buildpath(fpath, "*Table.csv"), vbNormal)
Do While f <> ""
f = fso.buildpath(fpath, f)
dtMod = FileDateTime(f)
If dtMod >= dMinfold And Right(f, 3) = "csv" Then
rv.Add f
End If
f = Dir()
Loop
Loop
Set GetFiles = rv
End Function'''
然后,我有了我的代码,可以从每个文件中获取传输数据。谢谢。