Convert a Short Filename Into a Long Filename

Convert a Short Filename Into a Long Filename

You can use the Dir( ) function to return a long filename, but the return does not include path information. By parsing a given short path/filename into its constituent directories, you can use the Dir( ) function to build a long path/filename with 32-bit versions of VB, without the assistance of APIs:

 Public Function GetLongFilename(ByVal _sShortName As String) As StringDim sLongName As StringDim sTemp As StringDim iSlashPos As Integer' Add  to short name to prevent Instr from failingsShortName = sShortName & ""' Start from 4 to ignore the "[Drive' Letter]:" charactersiSlashPos = InStr(4, sShortName, "")' Pull out each string between  character for conversionDo While iSlashPossTemp = Dir(Left$(sShortName, _iSlashPos - 1), vbNormal Or vbHidden _Or vbSystem Or vbDirectory)If sTemp = "" Then' Error 52 - Bad File Name or NumberGetLongFilename = ""Exit FunctionEnd IfsLongName = sLongName & "" & sTempiSlashPos = InStr(iSlashPos + 1, sShortName, "")Loop' Prefix with the drive letterGetLongFilename = Left$(sShortName, 2) & sLongNameEnd Function'From any place, add this lineGetLongFilename("C:PROGRA~1COMMON~1")

This function, as written, expects a standard fully qualified, drive-based filespec.


Share the Post: