フォルダ存在チェック方法は2通り

VBAでファイル関連の操作を行う際に、フォルダの存在を確認したい場合があります。

フォルダの存在チェックの方法には2通りあります。

1つはFileSystemObjectのFolderExists関数を利用する方法。もう1つはDir関数を利用する方法です。

FolderExistsとDirのどちらを使うべきか

FileSystemObjectのFolderExists関数とDir関数にはいずれも一長一短があります。

Dir関数はワイルドカードの*が指定できますが、FileSystemObjectはできません。

しかし、ファイル名の存在以外にもファイル関連の情報を調べる必要があるのであればFileSystemObjectを利用した方がよいでしょう。

なお、FileSystemObjectを利用する場合は、VBA画面のツールメニュー→参照設定で、Microsoft Scripting Runtimeにチェックを付ける必要があります。

Dir関数でのフォルダ存在チェック方法

Dir関数を利用する場合です。

Dir関数の引数にフォルダパスとディレクトリであることを示す定数を渡します。

その結果が未設定であればフォルダが存在しないとみなし、そうでなければフォルダが存在するとみなします。

引数1:(IN) チェック対象フォルダパス
戻り値:チェック結果(True:フォルダが存在する、False:フォルダが存在しない)

利用例です。

上記の関数にフォルダパスを渡して、フォルダ存在チェック結果を取得します。

 

FileExistsでのフォルダ存在チェック方法

次に、FileSystemObjectのFileExists関数を利用する場合です。

CreateObjectを1度だけ処理するようにするために、呼び出し元でFileSystemObjectの変数を定義しています。

引数1:(IN/OUT) FileSystemObject変数
引数2:(IN) チェック対象フォルダパス
戻り値:チェック結果(True:フォルダが存在する、False:フォルダが存在しない)

利用例です。

上記の関数にフォルダパスを渡して、フォルダ存在チェック結果を取得します。