【VBA】フォルダの存在確認方法|Dir関数とFileSystemObjectの違い・最も実務的な書き方を解説

Excel VBAでフォルダ操作を行う場合、フォルダが存在するかどうかの確認は非常に重要です。 存在しないフォルダに対して処理を行うと、実行時エラーが発生することがあります。

実務では次のような場面で頻繁に使われます。

  • フォルダが無ければ作成する
  • 削除前にフォルダの存在を確認する
  • ファイル保存先のフォルダをチェックする

VBAでフォルダの存在確認を行う方法は主に 2つ です。

  • Dir 関数 を使う方法(最もシンプルで高速)
  • FileSystemObject(FSO) を使う方法(ファイル管理全般に強い)

それぞれの使い方をわかりやすく解説します。

スポンサーリンク

1. Dir関数でフォルダの存在確認をする(最も簡単)

最もよく使われる方法が Dir関数 です。 シンプルで高速なため、実務でも頻繁に利用されます。

基本構文

Dir(フォルダパス, vbDirectory)

戻り値の意味

戻り値意味
フォルダ名フォルダが存在する
空文字(“”)フォルダが存在しない

使用例(存在確認)

Sub CheckFolder()

    Dim folderPath As String
    folderPath = "C:\SampleFolder"
    
    If Dir(folderPath, vbDirectory) <> "" Then
        MsgBox "フォルダは存在します"
    Else
        MsgBox "フォルダは存在しません"
    End If
End Sub

Dir関数のポイント

Dir は本来「ファイル検索」に使う関数ですが、 第2引数に vbDirectory を指定するとフォルダも検索対象になります。

Dir(folderPath, vbDirectory)

これによりフォルダの存在確認が可能になります。

実務で最もよく使うパターン(存在しなければ作成)

Sub CreateFolderIfNotExists()

    Dim folderPath As String
    folderPath = "C:\SampleFolder"
    
    If Dir(folderPath, vbDirectory) = "" Then
        MkDir folderPath
    End If

End Sub

動作は次の通りです。

  • フォルダが無い → 作成
  • フォルダがある → 何もしない

実務で非常に多い処理パターンです。

スポンサーリンク

2. FileSystemObjectでフォルダの存在確認をする(機能が豊富)

もう一つの方法が FileSystemObject(FSO) を使う方法です。 FSOにはフォルダ存在確認専用のメソッドがあります。

基本構文

FolderExists(フォルダパス)

戻り値は True / False です。

使用例

Sub CheckFolder()

    Dim fso As Object
    Dim folderPath As String
    
    folderPath = "C:\SampleFolder"
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    If fso.FolderExists(folderPath) Then
        MsgBox "フォルダは存在します"
    Else
        MsgBox "フォルダは存在しません"
    End If

End Sub

FileSystemObjectのメリット

FSOを使うと、次のような処理をまとめて扱えます。

  • フォルダ存在確認
  • フォルダ作成
  • フォルダ削除
  • ファイル作成
  • ファイルコピー
  • ファイル一覧取得

フォルダ操作だけでなく、ファイル管理全体を統一的に扱えるのが大きな特徴です。

スポンサーリンク

3. Dir と FileSystemObject の違い

項目DirFileSystemObject
記述量少ないやや多い
処理速度速いやや遅い
初心者向け
ファイル管理機能×
実務での用途簡単な存在確認ファイル管理全般

基本的な使い分けは次の通りです。

  • 簡単な存在確認 → Dir
  • ファイル管理をまとめたい → FileSystemObject
スポンサーリンク

4. 実務でよく使う存在確認コード(おすすめ)

最もシンプルで実務でもよく使われる書き方です。

Sub CheckFolder()

    Dim folderPath As String
    folderPath = "C:\SampleFolder"
    
    If Dir(folderPath, vbDirectory) = "" Then
        MsgBox "フォルダは存在しません"
    Else
        MsgBox "フォルダは存在します"
    End If

End Sub

処理が軽く、初心者でも理解しやすいのがメリットです。

スポンサーリンク

5. フォルダ操作の基本まとめ

VBAのフォルダ操作は次の3つが基本です。

操作方法
フォルダ作成MkDir / CreateFolder
フォルダ削除RmDir / DeleteFolder
フォルダ存在確認Dir / FolderExists

これらを組み合わせることで、VBAでのファイル管理処理を自動化できます。

スポンサーリンク

6. まとめ

VBAでフォルダの存在確認をする方法は次の2つです。

方法特徴
Dir関数シンプルで高速。初心者向け
FileSystemObject機能が豊富で実務向け

使い分けは次の通りです。

  • 簡単な存在確認 → Dir
  • ファイル操作をまとめたい → FileSystemObject

フォルダの存在確認は、フォルダ作成・削除と並んで、VBAのファイル管理で最も重要な基本操作です。

コメント

タイトルとURLをコピーしました