Подстановочные знаки используются для возврата всех имен файлов или папок в каталоге.Использование функции Dir () с параметрами изменяет путь, по которому функция будет искать файлы.Последующие вызовы функции Dir () вернут следующий файл или папку после предыдущего вызова.Dir () не будет искать в подкаталогах файл.
Вам нужно будет сделать рекурсивное задание параметра Атрибуты Dir () для vbDirectory, чтобы возвращать имена подпапок, а затем искать каждую подпапку.
Вы можете найти множество примеров, которые используют FileSystemObject для рекурсивного поиска подпапки файла.Я подумал, что было бы интересно написать тот, который использует функцию Dir ().
Function FindFile(ByVal folderName As String, ByVal FileName As String, Optional ByRef FoundFile As String) As String
Dim search As String
Dim dirList As New Collection
If Not Right(folderName, 1) = "\" Then folderName = folderName & "\"
search = Dir(folderName & "\*", vbDirectory)
While Len(search) > 0
If Not search = "." And Not search = ".." Then
If GetAttr(folderName & search) = 16 Then
dirList.Add folderName & search
Else
If LCase(search) = LCase(FileName) Then
FoundFile = folderName & FileName
FindFile = FoundFile
Exit Function
End If
End If
End If
search = Dir()
Wend
Dim fld
For Each fld In dirList
If Len(FoundFile) > 0 Then
FindFile = FoundFile
Exit Function
Else
FindFile = FindFile(CStr(fld), FileName, FoundFile)
End If
Next
End Function