Find That File
Know the filename, but don注释:t know the directory?
Give your application a little more intelligence, with this incredibly compact find-file routine. It注释:ll do all the hard work for you - just pass it a filename and it注释:ll return the full and completed path.
This one works by calling a function in the IMAGEHLP DLL - and search through all subdirectories of the specified path, looking for the passed filename. It returns the full and completed path of your file.
To use this code, call FindFile, passing in the root path and filename. The function returns the full and completed path - or a null string if nothing was found.
Usage
MsgBox FindFile("c:", "NWind.mdb")Code
Declare Function SearchTreeForFile Lib "IMAGEHLP.DLL" _
(ByVal lpRootPath As String, _
ByVal lpInputName As String, _
ByVal lpOutputName As String) As Long
Public Const MAX_PATH = 260
Public Function FindFile(RootPath As String, _
FileName As String) As String
Dim lNullPos As Long
Dim lResult As Long
Dim sBuffer As String
On Error GoTo FileFind_Error
注释:Allocate buffer
sBuffer = Space(MAX_PATH * 2)
注释:Find the file
lResult = SearchTreeForFile(RootPath, FileName, sBuffer)
注释:Trim null, if exists
If lResult Then
lNullPos = InStr(sBuffer, vbNullChar)
If Not lNullPos Then
sBuffer = Left(sBuffer, lNullPos - 1)
End If
注释:Return filename
FindFile = sBuffer
Else
注释:Nothing found
FindFile = vbNullString
End If
Exit Function
FileFind_Error:
FindFile = vbNullString
End FunctionTip by Karl Moore