Excel VBA クラスファイルを使ってフォルダの存在をチェックする方法 オブジェクト指向

今回は、Excel VBAでフォルダの存在をチェックする方法について解説します。
クラスファイルを使用してオブジェクト指向で記載するコードを紹介します。

Dir 関数を使う方法

Dir 関数は、指定したパスにあるファイルやフォルダの名前を返す関数です。
この関数の戻り値が空文字列(””)でない場合、指定したフォルダが存在すると判断できます。

Sub dir_folder()


Dim folderPath As String
folderPath = "C:\Users\user\Desktop\test"

If Dir(folderPath, vbDirectory) <> "" Then
    MsgBox "フォルダは存在します。"
Else
    MsgBox "フォルダは存在しません。"
End If

End Sub

FileSystemObject を使う方法

FileSystemObject は、ファイルシステムを操作するためのオブジェクトです。
FolderExists メソッドを使うことでフォルダの存在をより直接的に確認できます。

Dim fso As Object
Dim folderPath As String

Set fso = CreateObject("Scripting.FileSystemObject")
folderPath = "C:\Your\Folder\Path"

If fso.FolderExists(folderPath) Then
    MsgBox "フォルダは存在します。"
Else
    MsgBox "フォルダは存在しません。"
End If

クラスファイルを使用して、オブジェクト指向でファイルの存在確認

クラスファイルを使用して、オブジェクト指向でファイル存在確認のサンプルプログラムを作成します。
Excel VBAでAlt + F11を押し、VBAエディタを開きます。
「挿入」メニューから「クラスモジュール」を選び、clsFolderManagerという名前にします。

赤枠の「オブジェクト名」を「clsFolderManager」に変更すると、青枠のクラスモジュール名も変更されます。

コードを記載します。

Option Explicit

Private folderPath As String

' フォルダパスのプロパティ
Public Property Let Path(ByVal value As String)
    folderPath = value
End Property

Public Property Get Path() As String
    Path = folderPath
End Property

' フォルダの存在を確認するメソッド
Public Function FolderExists() As Boolean
    FolderExists = (Dir(folderPath, vbDirectory) <> "")
End Function

' フォルダを作成するメソッド
Public Function CreateFolder() As Boolean
    If Not FolderExists Then
        MkDir folderPath
        CreateFolder = True
    Else
        CreateFolder = False
    End If
End Function

' フォルダのチェックと作成のメインメソッド
Public Sub EnsureFolderExists()
    If FolderExists Then
        MsgBox "フォルダは既に存在します: " & folderPath
    Else
        If CreateFolder Then
            MsgBox "フォルダを作成しました: " & folderPath
        Else
            MsgBox "フォルダの作成に失敗しました: " & folderPath
        End If
    End If
End Sub

clsFolderManager クラスでは、フォルダパス(folderpath)という変数(プロパティ)とフォルダの存在確認 (FolderExists)、フォルダ作成 (CreateFolder)、およびフォルダがなければ作成するメソッド (EnsureFolderExists) を準備しました。

クラスファイルで書くことでフォルダパスが変わっても汎用性があるプログラムになり、プログラムも読みやすいです。

クラスのインスタンスを作成して、指定したフォルダの存在確認を行います。
Dim folderManager As clsFolderManagerでcslFolderManaerのインスタンス「folderManager」を生成します。
folderManagerのプロパティにパスを指定します。
folderManagerのメソッド「EnsureFolderExists」を使用します。

Sub TestFolderManager()
    Dim folderManager As clsFolderManager
    Set folderManager = New clsFolderManager

    ' チェックしたいフォルダパスを設定
    folderManager.Path = "C:\Users\user\Desktop\test"

    ' フォルダの存在確認と作成を実行
    folderManager.EnsureFolderExists

    ' オブジェクトの解放
    Set folderManager = Nothing
End Sub

まとめ

今回は、Excel VBAでフォルダの存在をチェックする方法について解説しました。

upandup

Web制作の記事を中心に、暮らし、ビジネスに役立つ情報を発信します。 アフィリエイトにも参加しています。よろしくお願いいたします。