VBAでファイル操作をしていると、次のようなことはありませんか?
- ファイルが存在するか確認したい
- フォルダ内のファイル一覧を取得したい
- 特定のファイルだけを処理したい
このような場合は、Dir関数を使うことで解決できます。
ファイルやフォルダの存在確認・一覧取得ができる、VBAで非常に重要な関数です。
この記事では、Dir関数の基本から実務で使える応用までを初心者向けに分かりやすく解説します。
この記事でできること
- ファイルの存在確認ができる
- フォルダ内のファイル一覧を取得できる
- 特定条件のファイルを抽出できる
基本:Dir関数の使い方
基本構文はこちらです。
Dir(パス)
例:
MsgBox Dir("C:\test\sample.xlsx")
→ ファイルが存在すれば「sample.xlsx」が返ります。
ファイルの存在確認
最もよく使うパターンです。
Option Explicit
Sub CheckFileExists()
Dim filePath As String
filePath = "C:\test\sample.xlsx"
If Dir(filePath) <> "" Then
MsgBox "ファイルは存在します"
Else
MsgBox "ファイルは存在しません"
End If
End Sub
フォルダの存在確認
If Dir("C:\test", vbDirectory) <> "" Then
MsgBox "フォルダは存在します"
End If
ファイル一覧を取得する方法
Dir関数は繰り返し呼び出すことで一覧を取得できます。
Option Explicit
Sub GetFileList()
Dim fileName As String
fileName = Dir("C:\test\*.*")
Do While fileName <> ""
Debug.Print fileName
fileName = Dir
Loop
End Sub
これでフォルダ内の全ファイル名が取得できます。
特定の拡張子だけ取得する
fileName = Dir("C:\test\*.xlsx")
→ Excelファイルだけ取得できます。
特定の文字を含むファイルを取得
fileName = Dir("C:\test\売上*.xlsx")
→ 「売上」で始まるファイルを取得
サブフォルダも含めて処理する考え方
Dir単体では再帰処理が必要になります。
応用として別記事にするとSEO的に強いです。
ファイルを1件ずつ処理する例
Option Explicit
Sub ProcessFiles()
Dim fileName As String
fileName = Dir("C:\test\*.xlsx")
Do While fileName <> ""
MsgBox "処理中:" & fileName
fileName = Dir
Loop
End Sub
実務での活用例
- ファイル存在チェック
- フォルダ内の一括処理
- CSVやExcelの一括読み込み
- バックアップ処理
ファイル操作系の基本となる関数です。
注意点(重要)
① 2回目以降は引数なし
一覧取得時は2回目以降は引数なしで呼び出します。
fileName = Dir
② 同時に複数使えない
Dirは1つの処理中にしか使えません。
③ フルパスに注意
相対パスではなくフルパスが安全です。
よくあるエラーと対処法
① ファイルが見つからない
パスが間違っている可能性があります。
② 途中で止まる
Dirの使い方(引数なし呼び出し)を確認してください。
③ コードは正しいのにエラーになる
コピー時に全角文字や特殊文字が混ざることがあります。
その場合は該当行を手入力し直すと解決することがあります。
まとめ
- Dirでファイル・フォルダを取得
- 存在確認は空文字チェック
- ループで一覧取得可能
- 実務ではファイル処理で必須
Dir関数を使いこなせるようになると、ファイル操作の自動化が一気に進みます。
VBAの実務では非常に重要な関数なので、ぜひ活用してみてください。

コメント