Как я открываю файл, если я только знаю часть имени файла?

Я должен открыть файл, полное имя файла которого я не знаю.

Я знаю, что имя файла - что-то как.

filename*esy

Я знаю определенно, что существует только одно возникновение этого файла в данном каталоге.

10
задан 0m3r 14 February 2018 в 19:24
поделиться

3 ответа

имя_файла * 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 $ () , чтобы получить следующее совпадение.

17
ответ дан 3 December 2019 в 19:32
поделиться

Вы можете использовать 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
2
ответ дан 3 December 2019 в 19:32
поделиться
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
1
ответ дан 3 December 2019 в 19:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: