【Excel VBA】フォルダの存在チェック(FileSystemObject FolderExists)

りゅう
こんにちは!りゅう(@ryupong_b)です。
今回は、「フォルダの存在チェック」について解説していきます。
はじめに

フォルダを取り扱うプログラムを書く場合、必ずフォルダの存在チェックを実施しましょう
FileSystemObjectのFolderExistsメソッドを使用するのがオススメです。
具体的な使用方法を解説しますので、ぜひ最後までお付き合いください。

この記事を読むメリット
  • フォルダの存在チェックの方法が分かります。
  • 類似機能であるDir関数との違いを解説します。
めい
結論だけ知りたいの方は、目次からサンプルコードの章をクリックしてください。

FileSystemObject FolderExistsメソッド

フォルダの存在チェックは、FileSystemObjectのFolderExistsメソッドを使用します。

構文

構文

FileSystemObject.FolderExists(folderspec)

引数

# 引数 必須 詳細
1 filespec 調べたいフォルダのパスを指定します。
絶対パス、相対パスの両方を指定可能です。

戻り値

  • フォルダが存在する場合:True
  • フォルダが存在しない場合:False

サンプルコード

前提

以下のようなフォルダ構成であることが前提として解説していきます。

フォルダ存在チェック(絶対パス指定)

マクロ本体と同列のフォルダに配置されている、「vba-hack」フォルダを絶対パスで存在をチェックするサンプルコードです。
前提のフォルダ構成の場合はTrueとなり、「フォルダが存在します。」というメッセージボックスが出力されます。

サンプルコード

サンプルコード
Public Sub checkFolderExist()
    Dim FSO As Object       ' FileSystemObject
    Dim folderPath As String  ' チェック対象フォルダパス

    ' FileSystemObjectインスタンス生成
    Set FSO = CreateObject("Scripting.FileSystemObject")

    ' フォルダパス生成
    folderPath = ThisWorkbook.Path & "\vba-hack"

    If FSO.FolderExists(folderPath) Then

        ' フォルダが存在する場合
        MsgBox "フォルダが存在します。", vbInformation
    Else

        ' フォルダが存在しない場合
        MsgBox "フォルダが存在しません。", vbInformation
    End If
End Sub

フォルダ存在チェック(相対パス指定)

FolderExistsメソッドでは、相対パスも使用できます。
以下は、カレントディレクトリを マクロ本体が配置されているディレクトリに移動した後、フォルダの存在チェックを実施しています。

サンプルコード

サンプルコード
Public Sub checkFolderExist()
    Dim FSO As Object       ' FileSystemObject
    Dim folderPath As String  ' チェック対象フォルダパス

    ' FileSystemObjectインスタンス生成
    Set FSO = CreateObject("Scripting.FileSystemObject")

    ' カレントディレクトリを マクロ本体が配置されているディレクトリに変更
    ChDir ThisWorkbook.Path

    If FSO.FolderExists(".\vba-hack") Then

        ' フォルダが存在する場合
        MsgBox "フォルダが存在します。", vbInformation
    Else

        ' フォルダが存在しない場合
        MsgBox "フォルダが存在しません。", vbInformation
    End If
End Sub

Dir関数の使用を推奨しない理由

本記事では、FileSystemObjectをご紹介していますが、Dir関数でも同じチェックが可能です。
ただしDir関数では、「\\」から始まるネットワークドライブの検索ができません。
従いまして、今回はFolderExistsメソッドのご紹介をいたしました!

最後に

いかがでしたでしょうか。
予期せぬエラーを発生しないためにも、フォルダの存在チェックは必ず実施してください!

この記事が、読者さまのお力になれれば嬉しいです!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

大手外資系コンサルティングファーム勤務。ExcelVBA歴は8年。金融関係のプロジェクトにて約100万レコードを処理するマクロの開発実績あり。ExcelVBAの基礎・応用情報を発信中。

コメント

コメントする

CAPTCHA