このサイト・インストラクターのネタ帳で、
「Dir関数」
「フォルダの存在有無」
「フォルダがあるか調べる」
といった検索が同じIPアドレスから連続して行われていました。
VBA(Visual Basic for Applications)のDir関数を使って、フォルダが存在しているかどうかを調べる方法・コードを探している方による検索でしょうか。
フォルダ存在の有無を調べるときにはFileSystemObjectを利用する必要がある、と思い込んでいる方もいらっしゃるようですがDir関数でも調べることができます。
Dir関数でフォルダの有無を確認
Dir関数の第2引数に、定数・vbDirectoryを指定してやると、フォルダ・ディレクトリが存在しているかどうかを調べることができます。
第2引数にvbDirectoryを指定したときに、第1引数に指定されたフォルダが存在していればフォルダ名を返し、存在していなければ空白文字列をDir関数は返してきます。
例えば、
MsgBox Dir("C:\temp", vbDirectory)
というコードを実行したときに、Cドライブの直下にtempというフォルダが存在していればメッセージボックスに「temp」と表示され、存在していなければ何も表示されていないメッセージボックスが表示されます。
フォルダの有無を調べるユーザー定義関数
フォルダ存在の有無を頻繁にチェックするのならば、以下のようなFunctionプロシージャ・ユーザー定義関数を作っておくといいでしょう。Function FolderExists(folder_path As String) As Boolean
If Dir(folder_path, vbDirectory) = "" Then
FolderExists = False
Else
FolderExists = True
End If
End Function
上記のFunctionプロシージャを作成しておいて
FolderExists("C:\temp")
を実行したときに「C:\temp」フォルダが存在していればTrue、存在していなければFalseが返されます。
FolderExists関数の引数に指定されたフォルダが存在しているかどうかをDir関数で調べて、もし空白文字列が返されれば、
If Dir(folder_path, vbDirectory) = "" Then
指定されたフォルダが存在しないのでFalseを返し、
FolderExists = False
そうでなければTrueを返しています。
Else
FolderExists = True
Home » エクセルマクロ・Excel VBAの使い方 » ユーザー定義関数 » フォルダが存在するかどうかを確認する-Dir(path, vbDirectory)