今回は、Excel VBAでフォルダの存在をチェックする方法について解説します。
クラスファイルを使用してオブジェクト指向で記載するコードを紹介します。
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 は、ファイルシステムを操作するためのオブジェクトです。
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でフォルダの存在をチェックする方法について解説しました。