Access VBAで業務システムを開発していると、
- CSVファイルが存在するか確認したい
- 指定フォルダ内のファイル一覧を取得したい
- 最新ファイルを探したい
- ファイル取込前にチェックしたい
- バッチ処理を自動化したい
といった要件が頻繁に発生します。
Windowsのファイル操作を行うならDir関数は最初に覚えるべき関数です。
前回紹介したFileSystemObjectよりシンプルで、Access VBA初心者でもすぐに利用できます。
特に、
CSV取込
Excel取込
ファイル監視
バックアップ確認
ログ管理
などで非常によく利用されます。
- Dir関数とは
- Dir関数でできること
- 基本構文
- 逆引き① ファイルの存在確認をしたい
- 逆引き② フォルダの存在確認をしたい
- 逆引き③ フォルダ内ファイル一覧を取得したい
- 逆引き④ CSVファイルだけ取得したい
- 逆引き⑤ Excelファイルだけ取得したい
- 逆引き⑥ 最新ファイルを探したい
- 逆引き⑦ 特定パターンのファイルを探したい
- 実務活用例① CSV自動取込システム
- 実務活用例② 顧客マスタ取込
- 実務活用例③ 設備管理システム
- 実務活用例④ ログ管理
- 実務活用例⑤ PDF帳票管理
- Dir関数とFileSystemObjectの違い
- FileDateTimeと組み合わせる
- ベテラン開発者の定番コード
- Dir利用時の注意点
- Copilot活用術① CSV監視処理作成
- Copilot活用術② ファイル存在確認
- Copilot活用術③ 自動取込処理
- Dir関数が向いている処理
- 開発現場での利用頻度
- まとめ
Dir関数とは
Dir関数は、
ファイル検索
フォルダ検索
存在確認
を行うためのVBA標準関数です。
Dir関数でできること
主な用途です。
ファイル存在確認
フォルダ存在確認
ファイル一覧取得
拡張子検索
条件付き検索
です。
基本構文
Dir(ファイルパス)
サンプル
If Dir("C:\DATA\Test.csv") <> "" Then
MsgBox "存在します"
End If
逆引き① ファイルの存在確認をしたい
最も利用頻度が高い処理です。
If Dir("C:\DATA\Test.csv") <> "" Then
MsgBox "ファイルあり"
Else
MsgBox "ファイルなし"
End If
活用例
CSV取込前チェック
PDF存在確認
バックアップ確認
逆引き② フォルダの存在確認をしたい
フォルダ確認です。
If Dir("C:\DATA", vbDirectory) <> "" Then
MsgBox "存在"
End If
効果
バックアップ処理前の確認ができます。
逆引き③ フォルダ内ファイル一覧を取得したい
実務で非常によく利用します。
Dim strFile As String
strFile = _
Dir("C:\DATA*.csv")
ループ処理
Do While strFile <> ""
Debug.Print _
strFile
strFile = Dir()
Loop
結果
Sales.csv
Customer.csv
Stock.csv
逆引き④ CSVファイルだけ取得したい
拡張子指定です。
strFile = _
Dir("C:\DATA*.csv")
効果
CSVだけ取得できます。
逆引き⑤ Excelファイルだけ取得したい
Excel取込で利用します。
strFile = _
Dir("C:\DATA*.xlsx")
結果
売上.xlsx
顧客.xlsx
逆引き⑥ 最新ファイルを探したい
フォルダ巡回です。
strFile = _
Dir("C:\DATA*.csv")
取得したファイルの更新日時を比較します。
FileDateTime
と組み合わせます。
逆引き⑦ 特定パターンのファイルを探したい
売上ファイル検索です。
strFile = _
Dir("C:\DATA\売上*.csv")
結果
売上202609.csv
売上202610.csv
取得できます。
実務活用例① CSV自動取込システム
最も利用されるケースです。
処理
CSV到着
↓
Dir確認
↓
取込実行
コード
If Dir(strFile) <> "" Then
DoCmd.TransferText
End If
実務活用例② 顧客マスタ取込
Excel受信確認です。
If Dir("C:\IMPORT\Customer.xlsx") <> "" Then
効果
ファイル未着エラーを防げます。
実務活用例③ 設備管理システム
測定データ取得です。
strFile = _
Dir("C:\MEASURE*.csv")
効果
自動連携できます。
実務活用例④ ログ管理
ログファイル確認です。
If Dir(strLogFile) <> "" Then
効果
ログ出力先確認
実務活用例⑤ PDF帳票管理
請求書確認です。
If Dir(strPdfFile) <> "" Then
効果
再発行防止
Dir関数とFileSystemObjectの違い
初心者が迷うポイントです。
Dir関数
Dir()
特徴
簡単
軽い
高速
標準機能
FileSystemObject
FileExists
CopyFile
DeleteFile
特徴
高機能
柔軟
大規模向け
おすすめ
存在確認だけなら
Dir
です。
FileDateTimeと組み合わせる
便利な活用法です。
取得
Debug.Print _
FileDateTime("C:\DATA\Test.csv")
結果
更新日時
取得できます。
ベテラン開発者の定番コード
CSV取込処理です。
Dim strFile As String
strFile = Dir("C:\IMPORT*.csv")
Do While strFile <> ""
Debug.Print strFile
strFile = Dir()
Loop
実務で非常によく利用されるパターンです。
Dir利用時の注意点
連続呼び出し
一覧取得時は
Dir()
で次のファイルを取得します。
別検索でリセット
途中で別のDirを実行すると状態がリセットされます。
ネットワークフォルダ
アクセス権が必要です。
Copilot活用術① CSV監視処理作成
Copilotへの依頼例です。
Access VBAです。
Dir関数を利用して
CSVファイル一覧を取得する
コードを作成してください。
Copilot活用術② ファイル存在確認
Dir関数を利用して
ファイル存在確認処理を
作成してください。
Copilot活用術③ 自動取込処理
Dir関数でCSVを探し
自動取込するコードを
作成してください。
実務コード生成との相性が非常に良い関数です。
Dir関数が向いている処理
特に活躍するのは次の用途です。
- CSV取込
- Excel取込
- ファイル監視
- バックアップ確認
- PDF管理
- ログ管理
- バッチ処理
開発現場での利用頻度
| 順位 | 用途 |
|---|---|
| 1位 | CSV存在確認 |
| 2位 | CSV一覧取得 |
| 3位 | Excel受信確認 |
| 4位 | PDF確認 |
| 5位 | ログファイル管理 |
Access VBA開発では非常に利用頻度の高い関数です。
まとめ
Dir関数はAccess VBAでファイル操作を行うための基本関数です。
特に
- ファイル存在確認
- フォルダ確認
- CSV取込
- Excel取込
- バックアップ管理
などで大きな効果を発揮します。
まずは次のコードを覚えましょう。
If Dir(strFile) <> "" Then
そして、
Dir("*.csv")
を利用した一覧取得を覚えれば、業務システムの自動化の幅が大きく広がります。
Copilotを活用すれば、
- ファイル監視コード生成
- CSV自動取込処理作成
- バックアップ確認ロジック作成
も効率良く進められます。
Access VBA初心者から中級者へステップアップするために、ぜひ習得しておきたい定番関数です。


コメント