フォルダかファイルか確認

指定したファイル名もしくはフォルダ名が、ファイルか?または、フォルダか?を判定。

【関数化】

' ------------------------------------------------------------
' 説明:指定した名前がフォルダか確認する
' 引数:1:確認するフォルダ名
' 戻値:フォルダの場合:True
'       フォルダではない:False
' 補足:フォルダが無い場合はFalseとする
' ------------------------------------------------------------
Function IsFolder(name As String) As Boolean
    
    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")

    ' エラーが発生したら、エラー処理を行う
    On Error GoTo ErrStep

    If fso.FolderExists(name) = True Then   ' フォルダの有無を確認
        If (fso.GetFolder(name).Attributes And 16) = 16 Then
            ' フォルダの場合
            IsFolder = True
            Exit Function
        End If
    End If
    
    IsFolder = False
    Exit Function

ErrStep:
    ' フォルダにアクセスできない場合(無い場合)はエラーとなる
    IsFolder = False

End Function

【関数化】

' ------------------------------------------------------------
' 説明:指定した名前がファイルか確認する
' 引数:1:確認するファイル名
' 戻値:ファイルの場合:True
'       ファイルではない:False
' 補足:ファイルが無い場合はFalseとする
' ------------------------------------------------------------
Function IsFile(name As String) As Boolean
    
    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")

    ' エラーが発生したら、エラー処理を行う
    On Error GoTo ErrStep

    If fso.FileExists(name) = True Then   ' ファイルの有無を確認
        If (fso.GetFile(name).Attributes And 16) = False Then
            ' ファイルの場合(フォルダ以外)
            IsFile = True
            Exit Function
        End If
    End If
    
    IsFile = False
    Exit Function

ErrStep:
    ' ファイルにアクセスできない場合(無い場合)はエラーとなる
    IsFile = False

End Function

【関数化】

' ------------------------------------------------------------
' 説明:指定した名前がファイルかフォルダか確認する
' 引数:1:確認するファイル名
' 戻値:ファイルの場合:1
'       フォルダの場合:2
'       ファイルが無い場合:0
' ------------------------------------------------------------
Function FileOrFolder(name As String) As Integer
    
    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")

    ' エラーが発生したら、エラー処理を行う
    On Error GoTo ErrStep


    If fso.FolderExists(name) = True Then   ' フォルダの有無を確認

        ' フォルダの場合
        FileOrFolder = 2
        Exit Function
    
    Else
        ' フォルダが見つからないのでファイルの確認
        If fso.FileExists(name) = True Then   ' 有無を確認
            ' ファイルの場合
            FileOrFolder = 1
        Else
            ' ファイルも見つからない
            FileOrFolder = 0
        End If
    
    End If
    
    Exit Function

ErrStep:
    ' ファイルにアクセスできない場合(無い場合)はエラーとなる
    FileOrFolder = 0

End Function

【補足】

FileSystemObject を 使用する際、Microsoft Scripting Runtime を使用しないようにしていますが、上記以外でも使用する場合は、ヒントが出るので Microsoft Scripting Runtime の使用も参考にしてください。

コメント