Parse Dir: This is what you need.
Option Compare Database
Private Const MAX_PATH& = 260
Private Const INVALID_HANDLE_VALUE = -1
Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
Type WIN32_FIND_DATA ' 318 Bytes
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type
Private Declare Function apiFindFirstFile Lib "kernel32" _
Alias "FindFirstFileA" _
(ByVal lpFileName As String, _
lpFindFileData As WIN32_FIND_DATA) _
As Long
Private Declare Function apiFindClose Lib "kernel32" _
Alias "FindClose" _
(ByVal hFindFile As Long) _
As Long
Private Declare Function apiGetShortPathName Lib "kernel32" _
Alias "GetShortPathNameA" _
(ByVal lpszLongPath As String, _
ByVal lpszShortPath As String, _
ByVal cchBuffer As Long) _
As Long
Function fGetLongName(ByVal strFileName As String) As String
Dim lpFindFileData As WIN32_FIND_DATA
Dim strPath As String, lngRet As Long
Dim strFile As String, lngX As Long, lngY As Long
Dim strTmp As String
strTmp = ""
Do While Not lngRet = INVALID_HANDLE_VALUE
lngRet = apiFindFirstFile(strFileName, lpFindFileData)
strFile = Left$(lpFindFileData.cFileName, _
InStr(lpFindFileData.cFileName, _
vbNullChar) - 1)
If Len(strFileName) > 2 Then
strTmp = strFile & "\" & strTmp
strFileName = fParseDir(strFileName)
Else
strTmp = strFileName & "\" & strTmp
Exit Do
End If
Loop
fGetLongName = Left$(strTmp, Len(strTmp) - 1)
lngY = apiFindClose(lngRet)
End Function
'To get the directory path of a file with path:
Function fParseDir(strInFile As String) As String
Dim intLen As Long, boolFound As Boolean
Dim I As Integer, f As String, strDir As String
intLen = Len(strInFile) 'length of string
If intLen > 0 Then
boolFound = False
For I = intLen To 1 Step -1 'reverse increment
If Mid$(strInFile, I, 1) = "\" Then
f = Mid$(strInFile, I + 1)
strDir = Left$(strInFile, I - 1)
boolFound = True
Exit For
End If
Next I
End If
If boolFound Then
fParseDir = strDir
Else
fParseDir = strInFile
End If
End Function