業務システムの現場では、「指定フォルダにファイルが置かれたら自動で処理したい」という要望が非常に多くあります。
例えば、
- 毎日届くCSVファイル
- 各部署から提出されるExcelファイル
- 測定機器から出力されるデータ
- 他システムから連携される帳票
などです。
最近の当ホームページではCSV取込自動化、Excel統合、メール送信、PDF出力などを紹介してきましたが、本記事ではそれらの前段となる「フォルダ監視」に焦点を当てます。実はフォルダ監視を組み込むことで、さらに一歩進んだ自動化が実現できます。
- はじめに
- なぜフォルダ監視が重要なのか
- フォルダ監視で実現できること
- フォルダ内ファイルを確認する基本
- 逆引き① ファイルの存在確認をしたい
- 逆引き② 新規到着ファイルだけ処理したい
- 逆引き③ フォルダ内のCSVを一括取込したい
- 逆引き④ Excelを自動取込したい
- 逆引き⑤ 処理後ファイルを移動したい
- 逆引き⑥ バックアップを保存したい
- 実務活用例① 測定データ自動取り込み
- 実務活用例② 日報集計システム
- 実務活用例③ 受発注データ連携
- エラー処理を忘れない
- ログ管理を実装する
- Copilot活用術① フォルダ監視コード生成
- Copilot活用術② 保守性チェック
- Copilot活用術③ ログ設計支援
- 導入時の注意点
- AI時代でも重要なAccessの強み
- まとめ
はじめに
結論から言うと、Access VBAでフォルダ監視の仕組みを作ることで、利用者がボタンを押さなくてもデータ取込や処理開始を行えるようになります。
さらにCopilotを活用すれば、
- フォルダ監視コード作成
- エラー解析
- ログ機能実装
- 保守性向上
まで効率的に進められます。CopilotはVBAコード生成やエラー調査の支援に活用できるため、Access開発との相性が非常に良いです。 [latest-inf…system.com]
なぜフォルダ監視が重要なのか
現場では次のような問題があります。
毎回ファイル選択が面倒
利用者が手動でファイルを探す必要がある。
取込忘れが発生する
ファイルは到着しているのに処理していない。
作業時間が掛かる
単純作業なのに担当者の時間を消費する。
ヒューマンエラーが発生する
別ファイルを選択してしまう。
フォルダ監視を導入するとこれらを大幅に改善できます。
フォルダ監視で実現できること
例えば次のような自動化です。
CSV到着
↓
自動検知
↓
Access取込
↓
ログ保存
↓
担当者通知
完全自動運用に近い仕組みを構築できます。
フォルダ内ファイルを確認する基本
まずは対象フォルダのファイルを確認します。
Dim strFile As String
strFile = Dir("C:\Import*.csv")
Do While strFile <> ""
Debug.Print strFile
strFile = Dir()
Loop
CSV一覧が取得できます。
逆引き① ファイルの存在確認をしたい
最も基本的な処理です。
If Dir(“C:\Import\Test.csv”) <> “” Then
MsgBox “存在します”
End If
取込前の確認処理として利用します。
逆引き② 新規到着ファイルだけ処理したい
実務で非常に重要です。
例えば取込済テーブルを作成します。
T_IMPORT_LOG
| 項目 |
|---|
| ファイル名 |
| 取込日時 |
取込前に履歴確認を行います。
SELECT *
FROM T_IMPORT_LOG
WHERE ファイル名='TEST.CSV'
同じファイルの重複処理を防止できます。
逆引き③ フォルダ内のCSVを一括取込したい
CSV自動化との組み合わせです。
strFile = Dir("C:\Import*.csv")
Do While strFile <> ""
DoCmd.TransferText _
acImportDelim, _
, _
"T_IMPORT", _
"C:\Import" & strFile
strFile = Dir()
Loop
CSV取込自動化と非常に相性が良いです。 [latest-inf…system.com]
逆引き④ Excelを自動取込したい
Excelファイルも同様です。
DoCmd.TransferSpreadsheet _
acImport, _
acSpreadsheetTypeExcel12Xml, _
"T_DATA", _
"C:\Import\Test.xlsx", _
True
毎日のExcel収集作業を効率化できます。
逆引き⑤ 処理後ファイルを移動したい
処理済と未処理を分離します。
Name _
"C:\Import\Test.csv" As _
"C:\Complete\Test.csv"
運用では必須の機能です。
逆引き⑥ バックアップを保存したい
重要なデータ保全対策です。
FileCopy _
"C:\Import\Test.csv", _
"C:\Backup\Test.csv"
万一の再取込にも対応できます。
実務活用例① 測定データ自動取り込み
工場や試験設備では、
測定機器
↓
CSV出力
↓
共有フォルダ
↓
Access自動取込
の構成がよく利用されます。
担当者が操作しなくてもデータ蓄積が可能になります。
実務活用例② 日報集計システム
各部署がExcel提出。
Excel提出
↓
共有フォルダ
↓
自動集計
↓
管理資料作成
非常に効果的です。
実務活用例③ 受発注データ連携
外部システムとの連携です。
受注CSV
↓
監視フォルダ
↓
自動取込
↓
在庫処理
入力作業を削減できます。
エラー処理を忘れない
自動処理では必須です。
On Error GoTo ErrHandler
'処理
Exit Sub
ErrHandler:
MsgBox _
Err.Number & vbCrLf & _
Err.Description
エラー処理の実装は長期運用で非常に重要です。 [latest-inf…system.com]
ログ管理を実装する
保守性向上のため履歴を保存します。
T_FOLDER_LOG
| 項目 |
|---|
| 処理日時 |
| ファイル名 |
| 結果 |
記録例
CurrentDb.Execute _
"INSERT INTO T_FOLDER_LOG " & _
"(処理日時,ファイル名) " & _
"VALUES(Now(),'TEST.CSV')"
トラブル調査が容易になります。
Copilot活用術① フォルダ監視コード生成
Copilotへ次のように依頼します。
Access VBAで共有フォルダ内のCSVを監視し、
未取込ファイルのみ取り込むコードを作成してください。
条件
・ログテーブル管理
・エラー処理あり
・処理後移動あり
雛形コードを短時間で作成できます。
Copilot活用術② 保守性チェック
既存コードに対して、
改善点を教えてください
と依頼します。
すると、
- 関数化
- 変数命名
- エラー処理
- 処理速度改善
などの提案が得られます。 [latest-inf…system.com]
Copilot活用術③ ログ設計支援
次のような依頼も有効です。
Accessのファイル取込システム用の
ログテーブル設計を考えてください。
保守性向上につながります。
導入時の注意点
ファイルロック
他ユーザーが開いている可能性があります。
大量ファイル
一括処理時の性能確認が必要です。
保存容量
バックアップ運用を考慮します。
ネットワーク障害
共有フォルダ利用時は特に注意します。
ログ肥大化
定期削除ルールを決めましょう。
AI時代でも重要なAccessの強み
AIやクラウドサービスが普及しても、
- データ管理
- 業務入力
- 帳票出力
- システム連携
といった分野ではAccessが活躍しています。
特にフォルダ監視による自動処理は、既存システムを大きく改修せずに導入できるため、現場改善効果が高い施策です。
さらにCopilotを組み合わせることで、実装から保守までの負担を大幅に削減できます。 [latest-inf…system.com], [latest-inf…system.com]
まとめ
Access VBAによるフォルダ監視は、業務自動化の入り口として非常に有効な手法です。
特に、
- CSV取込
- Excel連携
- 測定データ収集
- 受発注処理
- 日報集計
などで大きな効果を発揮します。
またCopilotを活用することで、
- VBA生成
- コードレビュー
- エラー解析
- ログ設計
を効率的に行えるため、開発期間の短縮と品質向上が期待できます。
日々の手作業を減らしたい場合は、まずフォルダ監視から自動化を始めてみることをおすすめします。

コメント