Вы можете зациклить папку и извлечь часть даты из строки и сохранить наибольшее значение для использования для идентификации файла. Следующее также применило маску файла "xlsx"
, которую вы можете удалить или изменить. Он использует регулярное выражение для поиска подходящих имен файлов в соответствии с указанным вами шаблоном.
Option Explicit
Public Sub GetLastestDateFile()
Dim FileSys As Object, objFile As Object, myFolder As Object, strFile As String, dteFile As Long
Const myDir As String = "C:\Users\User\Desktop\TestFolder"
Set FileSys = CreateObject("Scripting.FileSystemObject")
Set myFolder = FileSys.GetFolder(myDir)
Dim fileName As String, tempDate As Long, fileMask As String
dteFile = 0: fileMask = "xlsx"
For Each objFile In myFolder.Files
If FileSys.GetExtensionName(objFile.Path) = fileMask And ValidateFile(Split(objFile.Name, ".xlsx")(0)) Then
tempDate = GetDateFromFileName(objFile.Name)
Dim pseudoDate As String
pseudoDate = ReArrange(tempDate)
If pseudoDate > dteFile Then dteFile = pseudoDate
End If
Next objFile
If Not tempDate = 0 Then Workbooks.Open (myDir & "\" & "Fundings " & Format$(ReArrange(dteFile), "000000") & "." & fileMask)
End Sub
Public Function ReArrange(ByVal tempDate As String) As String
tempDate = Format$(tempDate, "000000")
ReArrange = Format$(Right$(tempDate, 2), "00") & Format$(Mid$(tempDate, 3, 2), "00") & Format$(Left$(tempDate, 2), "00")
End Function
Public Function ValidateFile(ByVal fileName As String) As Boolean
With CreateObject("VBScript.RegExp")
.Global = True
.MultiLine = True
.Pattern = "Fundings\s\d{6}$"
ValidateFile = .test(fileName)
End With
End Function
Public Function GetDateFromFileName(ByVal fileName As String) As Date
On Error GoTo errhand
GetDateFromFileName = Split(Split(fileName, "Fundings ")(1), ".")(0)
Exit Function
errhand:
GetDateFromFileName = 0
End Function
Regex:
Попробуйте регулярное выражение здесь .
Пояснение:
Fundings\s\d{6}$
/
gm
Fundings
соответствует буквам Fundings
буквально (с учетом регистра)
\s
соответствует любому пробелу (равен [\r\n\t\f\v ]
)
\d{6}
соответствует цифре (равно [0-9]
)
{6}
Квантор - соответствует ровно 6 раз
$
устанавливает положение в конце строки