VBA(Visual Basic for Applications)のDir関数の第2引数に、定数・vbDirectoryを指定すれば、フォルダーが存在するかどうかを調べられます。
フォルダー有無の確認をFileSystemObjectオブジェクトを使って行いたい、という要望をいただくこともあります。
このサイト・インストラクターのネタ帳のアクセスログにも、
「vba fso フォルダがあるか調べる」
「filesystemobject フォルダ有無」
といった検索キーワードが見られます。
FileSystemObject.FolderExistsメソッドでフォルダーの有無を確認できる
FileSystemObjectオブジェクトにはFolderExistsという、
名前どおりフォルダーの有無を調べられるメソッドがあります。
[スポンサードリンク]
CreateObject関数・オブジェクト変数を使ってフォルダーの有無を確認するサンプルマクロ
以下のような、VBAのCreateObject関数とオブジェクト変数を使ったSubプロシージャで、フォルダーの有無を確認できます。
Sub フォルダー有無を確認する_CreateObject_オブジェクト変数()
Const FOL_PATH = "C:\temp"
Dim fso As Object ' Scripting.FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FolderExists(FOL_PATH) Then
MsgBox FOL_PATH & " は、あります!"
Else
MsgBox FOL_PATH & " は、存在しません。"
End If
Set fso = Nothing
End Sub
Const FOL_PATH = "C:\temp"
Dim fso As Object ' Scripting.FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FolderExists(FOL_PATH) Then
MsgBox FOL_PATH & " は、あります!"
Else
MsgBox FOL_PATH & " は、存在しません。"
End If
Set fso = Nothing
End Sub
定数・FOL_PATHに指定された「C:\temp」フォルダーが
存在していれば、
「C:\temp は、あります!」
存在しなければ
「C:\temp は、存在しません。」
とメッセージが表示されます。
CreateObject関数・With文を使ってフォルダーの有無を確認するサンプルマクロ
オブジェクト変数を使わずに、Withステートメントを使った以下のようなSubプロシージャでもOKです。
Sub フォルダー有無を確認する_CreateObject_Withステートメント()
Const FOL_PATH = "C:\temp" With CreateObject("Scripting.FileSystemObject")
If .FolderExists(FOL_PATH) Then
MsgBox FOL_PATH & " は、あります!"
Else
MsgBox FOL_PATH & " は、存在しません。"
End If
End With
End Sub
Const FOL_PATH = "C:\temp" With CreateObject("Scripting.FileSystemObject")
If .FolderExists(FOL_PATH) Then
MsgBox FOL_PATH & " は、あります!"
Else
MsgBox FOL_PATH & " は、存在しません。"
End If
End With
End Sub
参照設定済の環境でオブジェクト変数を使ってフォルダーの有無を確認するサンプルマクロ
Scripting.FileSystemObjectへの参照設定が行われている環境なら、以下のようなSubプロシージャでもOKです。
Sub フォルダー有無を確認する_参照設定済_オブジェクト変数()
Const FOL_PATH = "C:\temp"
Dim fso As Scripting.FileSystemObject Set fso = New Scripting.FileSystemObject
If fso.FolderExists(FOL_PATH) Then
MsgBox FOL_PATH & " は、あります!"
Else
MsgBox FOL_PATH & " は、存在しません。"
End If
Set fso = Nothing
End Sub
Const FOL_PATH = "C:\temp"
Dim fso As Scripting.FileSystemObject Set fso = New Scripting.FileSystemObject
If fso.FolderExists(FOL_PATH) Then
MsgBox FOL_PATH & " は、あります!"
Else
MsgBox FOL_PATH & " は、存在しません。"
End If
Set fso = Nothing
End Sub
参照設定済の環境でWithステートメントを使ってフォルダーの有無を確認するサンプルマクロ
Scripting.FileSystemObjectへの参照設定が行われていて、オブジェクト変数ではなくWithステートメントを使うなら以下のようなSubプロシージャです。
Sub フォルダー有無を確認する_参照設定済_Withステートメント()
Const FOL_PATH = "C:\temp"
With New Scripting.FileSystemObject
If .FolderExists(FOL_PATH) Then
MsgBox FOL_PATH & " は、あります!"
Else
MsgBox FOL_PATH & " は、存在しません。"
End If
End With
End Sub
Const FOL_PATH = "C:\temp"
With New Scripting.FileSystemObject
If .FolderExists(FOL_PATH) Then
MsgBox FOL_PATH & " は、あります!"
Else
MsgBox FOL_PATH & " は、存在しません。"
End If
End With
End Sub
[スポンサードリンク]
- Newer:オブジェクトブラウザーに_Defaultが表示されない
- Older:EntireRowとRowの違い
Home » FSO・FileSystemObjectの使い方 » フォルダーの有無をFileSystemObjectで確認する-FolderExistsメソッド