フォルダが存在するかどうかを確認する関数

タイトルのマクロは、以下です。

'****************************************************************
'* フォルダが存在するかどうかを確認する関数
'* myFolder: 確認するフォルダのパス
'* 戻り値: フォルダが存在すればTrue、存在しなければFalse
Public Function ExistFolder(myFolder As String) As Boolean
    On Error GoTo ErrHdl        ' エラーハンドリングを設定
    ExistFolder = False         ' 初期値としてFalseを設定
    With New FileSystemObject   ' FileSystemObjectを新規作成
        .GetFolder (myFolder)   ' 指定されたフォルダが存在するか確認
    End With
    ExistFolder = True          ' フォルダが存在すればTrueを設定
    Exit Function               ' 関数を終了
    
ErrHdl:                         ' エラーハンドラ
    ExistFolder = False         ' フォルダが存在しない場合はFalseを設定
End Function

各部分の詳細説明

  • この関数は、指定されたフォルダが存在するかどうかを確認し、その結果をブール値(True/False)で返します。
  • myFolder は、確認するフォルダのパスを示す文字列です。
    On Error GoTo ErrHdl        ' エラーハンドリングを設定
    ExistFolder = False         ' 初期値としてFalseを設定
  • On Error GoTo ErrHdl は、エラーが発生した場合にエラーハンドラ(ErrHdl)にジャンプするように設定します。
  • 関数の戻り値である ExistFolder を初期値として False に設定します。
    With New FileSystemObject   ' FileSystemObjectを新規作成
        .GetFolder (myFolder)   ' 指定されたフォルダが存在するか確認
    End With
  • FileSystemObject を新規に作成し、With ブロック内で使用します。
  • GetFolder メソッドを使って、指定されたフォルダが存在するかどうかを確認します。このメソッドが成功すると、フォルダが存在することが確認できます。
    ExistFolder = True          ' フォルダが存在すればTrueを設定
    Exit Function               ' 関数を終了
  • フォルダが存在する場合、ExistFolder を True に設定します。
  • Exit Function により、関数を正常終了します。
ErrHdl:                         ' エラーハンドラ
    ExistFolder = False         ' フォルダが存在しない場合はFalseを設定
  • ここはエラーハンドラです。GetFolder メソッドがエラーを発生させた場合に実行されます。
  • エラーが発生した場合、フォルダが存在しないとみなして ExistFolder を False に設定します。

Follow me!