PR

Access VBA逆引き集|Dir関数でファイル検索・存在確認を自動化する実践テクニックとCopilot活用術

VBA

Access VBAで業務システムを開発していると、

  • CSVファイルが存在するか確認したい
  • 指定フォルダ内のファイル一覧を取得したい
  • 最新ファイルを探したい
  • ファイル取込前にチェックしたい
  • バッチ処理を自動化したい

といった要件が頻繁に発生します。

Windowsのファイル操作を行うならDir関数は最初に覚えるべき関数です。

前回紹介したFileSystemObjectよりシンプルで、Access VBA初心者でもすぐに利用できます。

特に、

CSV取込

Excel取込

ファイル監視

バックアップ確認

ログ管理

などで非常によく利用されます。


スポンサーリンク

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初心者から中級者へステップアップするために、ぜひ習得しておきたい定番関数です。

Access VBA逆引き大全 600の極意 Microsoft365/Office2024/2021/2019/2016対応 | E-Trainer.jp[中村峻] |本 | 通販 | Amazon
AmazonでE-Trainer.jp[中村峻]のAccess VBA逆引き大全 600の極意 Microsoft365/Office2024/2021/2019/2016対応。アマゾンならポイント還元本が多数。E-Trainer.jp[中…

コメント

タイトルとURLをコピーしました