Excel VBAでフォルダ操作を行う場合、フォルダが存在するかどうかの確認は非常に重要です。 存在しないフォルダに対して処理を行うと、実行時エラーが発生することがあります。
実務では次のような場面で頻繁に使われます。
- フォルダが無ければ作成する
- 削除前にフォルダの存在を確認する
- ファイル保存先のフォルダをチェックする
VBAでフォルダの存在確認を行う方法は主に 2つ です。
- Dir 関数 を使う方法(最もシンプルで高速)
- FileSystemObject(FSO) を使う方法(ファイル管理全般に強い)
それぞれの使い方をわかりやすく解説します。
目次
1. Dir関数でフォルダの存在確認をする(最も簡単)
最もよく使われる方法が Dir関数 です。 シンプルで高速なため、実務でも頻繁に利用されます。
基本構文
Dir(フォルダパス, vbDirectory)
戻り値の意味
| 戻り値 | 意味 |
|---|---|
| フォルダ名 | フォルダが存在する |
| 空文字(“”) | フォルダが存在しない |
使用例(存在確認)
Sub CheckFolder()
Dim folderPath As String
folderPath = "C:\SampleFolder"
If Dir(folderPath, vbDirectory) <> "" Then
MsgBox "フォルダは存在します"
Else
MsgBox "フォルダは存在しません"
End If
End Sub
Dir関数のポイント
Dir は本来「ファイル検索」に使う関数ですが、 第2引数に vbDirectory を指定するとフォルダも検索対象になります。
Dir(folderPath, vbDirectory)
これによりフォルダの存在確認が可能になります。
実務で最もよく使うパターン(存在しなければ作成)
Sub CreateFolderIfNotExists()
Dim folderPath As String
folderPath = "C:\SampleFolder"
If Dir(folderPath, vbDirectory) = "" Then
MkDir folderPath
End If
End Sub
動作は次の通りです。
- フォルダが無い → 作成
- フォルダがある → 何もしない
実務で非常に多い処理パターンです。
2. FileSystemObjectでフォルダの存在確認をする(機能が豊富)
もう一つの方法が FileSystemObject(FSO) を使う方法です。 FSOにはフォルダ存在確認専用のメソッドがあります。
基本構文
FolderExists(フォルダパス)
戻り値は True / False です。
使用例
Sub CheckFolder()
Dim fso As Object
Dim folderPath As String
folderPath = "C:\SampleFolder"
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FolderExists(folderPath) Then
MsgBox "フォルダは存在します"
Else
MsgBox "フォルダは存在しません"
End If
End Sub
FileSystemObjectのメリット
FSOを使うと、次のような処理をまとめて扱えます。
- フォルダ存在確認
- フォルダ作成
- フォルダ削除
- ファイル作成
- ファイルコピー
- ファイル一覧取得
フォルダ操作だけでなく、ファイル管理全体を統一的に扱えるのが大きな特徴です。
3. Dir と FileSystemObject の違い
| 項目 | Dir | FileSystemObject |
|---|---|---|
| 記述量 | 少ない | やや多い |
| 処理速度 | 速い | やや遅い |
| 初心者向け | ◎ | ○ |
| ファイル管理機能 | × | ◎ |
| 実務での用途 | 簡単な存在確認 | ファイル管理全般 |
基本的な使い分けは次の通りです。
- 簡単な存在確認 → Dir
- ファイル管理をまとめたい → FileSystemObject
4. 実務でよく使う存在確認コード(おすすめ)
最もシンプルで実務でもよく使われる書き方です。
Sub CheckFolder()
Dim folderPath As String
folderPath = "C:\SampleFolder"
If Dir(folderPath, vbDirectory) = "" Then
MsgBox "フォルダは存在しません"
Else
MsgBox "フォルダは存在します"
End If
End Sub
処理が軽く、初心者でも理解しやすいのがメリットです。
5. フォルダ操作の基本まとめ
VBAのフォルダ操作は次の3つが基本です。
| 操作 | 方法 |
|---|---|
| フォルダ作成 | MkDir / CreateFolder |
| フォルダ削除 | RmDir / DeleteFolder |
| フォルダ存在確認 | Dir / FolderExists |
これらを組み合わせることで、VBAでのファイル管理処理を自動化できます。
6. まとめ
VBAでフォルダの存在確認をする方法は次の2つです。
| 方法 | 特徴 |
|---|---|
| Dir関数 | シンプルで高速。初心者向け |
| FileSystemObject | 機能が豊富で実務向け |
使い分けは次の通りです。
- 簡単な存在確認 → Dir
- ファイル操作をまとめたい → FileSystemObject
フォルダの存在確認は、フォルダ作成・削除と並んで、VBAのファイル管理で最も重要な基本操作です。
コメント