我有一个宏,它循环遍历文件夹中的每个文件,如果文件名中带有今天的日期,则可以执行一些操作。
下面是一段代码:
For Each objFile In objFolder.Files
If Left(objFile.Name, 8) = Format(Date, "dd-mm-yy") Then
currSheet = Mid(objFile.Name, 10, 4)
Sheets(currSheet).Activate
'LastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, "A").End(xlUp).Row
'ActiveSheet.Range("A1:D" & LastRow).Clear
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & FolderName & objFile.Name _
, Destination:=Range("$A$1"))
.Name = Left(objFile.Name, Len(objFile.Name) - 4)
'.
'.
'.
End If
Next objFile
我刚刚意识到找到今天的文件大约需要60秒钟,因为它会循环浏览文件夹中的所有文件(每个文件大约0.1秒,但是有很多文件)。
我想查找具有以下名称的文件(仅适用于今天的日期),我每天运行一次此宏,例如:
30-07-18 CA01 NEGS.txt
30-07-18 CA02 NEGS.txt
30-07-18 CA03 NEGS.txt
30-07-18 CA04 NEGS.txt
所以我知道名称模式。
同一日期最多有4个文件。
因此,如果我仅搜索这些文件(并检查是否存在),而不是遍历所有文件,那就太好了。有可能做到吗?任何帮助将不胜感激!
答案 0 :(得分:3)
Dir函数接受通配符,并且可以返回与指定模式匹配的文件名。这是一个例子...
Option Explicit
Sub test()
Dim strPath As String
Dim strFile As String
Dim strPattern As String
strPattern = Format(Date, "dd-mm-yy")
strPath = "C:\Users\Domenic\Desktop\"
strFile = Dir(strPath & strPattern & "*.txt", vbNormal)
Do While Len(strFile) > 0
'Do stuff
'
'
strFile = Dir
Loop
End Sub