Я должен открыть файл, полное имя файла которого я не знаю.
Я знаю, что имя файла - что-то как.
filename*esy
Я знаю определенно, что существует только одно возникновение этого файла в данном каталоге.
имя_файла * esy
уже является подстановочным знаком «готово к оболочке», и если это всегда так, вы можете просто;
const SOME_PATH as string = "c:\rootdir\"
...
Dim file As String
file = Dir$(SOME_PATH & "filename*esy" & ".*")
If (Len(file) > 0) Then
MsgBox "found " & file
End If
Просто позвоните (или выполните цикл, пока он не станет пустым) file = Dir $ ()
, чтобы получить следующее совпадение.
Вы можете использовать Application.FileSearch
(см. Ниже). Вы можете использовать это для поиска файлов, соответствующих вашему шаблону. Эта информация взята из здесь .
Sub App_FileSearch_Example()
With Application.FileSearch
.NewSearch
.LookIn = "c:\some_folder\"
.FileName = "filename*esy"
If .Execute(SortBy:=msoSortByLastModified, SortOrder:=msoSortOrderDescending) > 0 Then
For i1 = 1 To .FoundFiles.Count
' do something with matched file(s)
Next i1
End If
End With
End Sub
If InStr(sFilename, "filename") > 0 and InStr(sFilename, "esy") > 0 Then
'do somthing
end if
Или можно использовать RegEx
Dim RE As Object, REMatches As Object
Set RE = CreateObject("vbscript.regexp")
With RE
.MultiLine = False
.Global = False
.IgnoreCase = True
.Pattern = "filename(.*)esy"
End With
Set REMatches = RE.Execute(sFilename)
REMatches(0) 'find match