EXCEL、VBA

【VBA】フォルダかファイルを判定する

 

フォルダかファイルを判定する関数

引数のパスがフォルダかファイルを判定する関数です。

引数 filePath:移動元のファイルパス

戻り値 -1~3の値。(0:フォルダ、1:ファイルへのショートカット、2:URLショートカット、3:ファイル、-1:不明)

Public Function judgeFolderOrFile(ByVal filePath As String) As Long

    Dim rtn
    Dim fso
    Dim strExName

    On Error Resume Next
    rtn = -1 '-1:不明
    Set fso = CreateObject("Scripting.FileSystemObject")
    If fso.FolderExists(filePath) Then
        rtn = 0 '0:フォルダ
    Else
        If fso.FileExists(filePath) Then
            strExName = fso.GetExtensionName(filePath)
            Select Case UCase(strExName)
                Case "LNK": rtn = 1 '1:ファイル(ショートカット)
                Case "URL": rtn = 2 '2:ファイル(URLショートカット)
                Case Else: rtn = 3  '3:ファイル
            End Select
        End If
    End If
    Set fso = Nothing
    judgeFolderOrFile = rtn

End Function

 

実行例

Debug.Print judgeFolderOrFile("C:\test\testfile.txt")
' 3