Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, _ lpFindFileData As WIN32_FIND_DATA) As Long
FindFirstFile ищет файл по его имени. Также может искать и подпапки (как разновидность имени файла).
В успешном случае возвращается поисковый описатель. В случае ошибки возвращается INVALID_HANDLE_VALUE (используйте GetLastError для получения кода ошибки).
' Ищем файлы, сооттветсвующие условию "C:\windows\*.ini" Dim hsearch As Long ' поисковый описатель Dim findinfo As WIN32_FIND_DATA Dim success As Long ' если файл найде, то 1, если не найден, то 0 Dim buffer As String ' буфер, куда заносится имя файла Dim lRet As Long ' возвращаемое значение ' Начинаем поиск: hsearch = FindFirstFile("C:\windows\*.ini", findinfo) If hsearch = -1 Then ' не найдено файлов по заданному условию Debug.Print "Файл(ы) не найден(ы)" End End If ' Выводим имена найденных файлов Do ' Извлекаем имя файла из буфера buffer = Left(findinfo.cFileName, InStr(findinfo.cFileName, vbNullChar) - 1) Debug.Print buffer ' Продолжаем поиск файлов success = FindNextFile(hsearch, findinfo) Loop Until success = 0 ' Закрываем поисковый дескриптор, т.к. больше файлов нет lRet = FindClose(hsearch)