Attribute VB_Name = "xGetLongFilename2関数" ' @(h) xGetLongFilename2関数.bas ver 1.0 ( '98.10.09 ) ' @(s) ' ショートファイルネームからロングファイルネームを取得する関数モジュール ' 本モジュールはテスト用コードモジュールです。 ' Option Explicit Sub xGetLongFilenameのテスト() 'ExcelまたはVisual Basicで実行してください。 Attribute xGetLongFilenameのテスト.VB_ProcData.VB_Invoke_Func = " \n14" 'パス名 "C:\Program Files\Common Files" を取得します MsgBox "(" & xGetLongFilename("C:\PROGRA~1\COMMON~1") & ")" End Sub ' @(f) ' ' 機能 : ショートファイルネームからロングファイルネームを取得する関数 ' ' 返り値 : ロングファイルネーム ' ' 引き数 : sShortName - ショートファイルネーム ' ' 機能説明 : ショートファイルネームからロングファイルネームを取得する関数 ' ' 備考 : 特になし ' Function xGetLongFilename(ByVal sShortName As String) As String Attribute xGetLongFilename.VB_ProcData.VB_Invoke_Func = " \n14" Dim sLongName As String Dim sTemp As String Dim iSlashPos As Integer 'Instr 関数がエラーにならないように文字列の最後に "\" をつけます sShortName = sShortName & "\" 'ドライブ名は無視して 4 文字目から開始します iSlashPos = InStr(4, sShortName, "\") '\ 記号間の文字列を取り出します While iSlashPos sTemp = Dir(Left$(sShortName, iSlashPos - 1), _ vbNormal + vbHidden + vbSystem + vbDirectory) If sTemp = "" Then 'ファイル名が不正です xGetLongFilename = "" Exit Function End If sLongName = sLongName & "\" & sTemp iSlashPos = InStr(iSlashPos + 1, sShortName, "\") Wend 'ドライブ名をつけます xGetLongFilename = Left$(sShortName, 2) & sLongName End Function