Home » エクセルマクロ・Excel VBAの使い方 » ユーザー定義関数 » フォルダが存在するかどうかを確認する-Dir(path, vbDirectory)

フォルダが存在するかどうかを確認する-Dir(path, vbDirectory)

対象:Excel2003, Excel2007, Excel2010, Excel2013

このサイト・インストラクターのネタ帳で、
「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プロシージャ
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)

「ユーザー定義関数」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.