Access VBAで業務システムを開発していると、
- CSVファイルを自動取込したい
- フォルダ内のファイル一覧を取得したい
- バックアップフォルダを自動作成したい
- 古いファイルを削除したい
- PDF出力後に所定フォルダへ保存したい
といった要件が頻繁に発生します。
FileSystemObject(FSO)を活用することで、Windowsのフォルダやファイル操作を柔軟に自動化できます。
CSV取込やPDF出力、ログ管理などの実務システムとの相性も非常に良く、Access開発者なら覚えておきたいテクニックの一つです。
- FileSystemObjectとは
- FileSystemObjectの準備
- 逆引き① ファイルが存在するか確認したい
- 逆引き② フォルダが存在するか確認したい
- 逆引き③ フォルダを作成したい
- 逆引き④ ファイルをコピーしたい
- 逆引き⑤ ファイルを削除したい
- 逆引き⑥ フォルダを削除したい
- 逆引き⑦ ファイルサイズを取得したい
- 逆引き⑧ ファイル名を取得したい
- 逆引き⑨ 拡張子を取得したい
- 逆引き⑩ フォルダ内ファイル一覧を取得したい
- 実務活用例① CSV自動取込
- 実務活用例② PDF帳票管理
- 実務活用例③ ログ管理
- 実務活用例④ バックアップ
- 実務活用例⑤ 古いファイル削除
- FileSystemObjectとDirの違い
- Copilot活用術① フォルダ監視コード作成
- Copilot活用術② バックアップ機能作成
- Copilot活用術③ コードレビュー
- FileSystemObject利用時の注意点
- 特に相性の良いシステム
- まとめ
FileSystemObjectとは
FileSystemObjectはWindowsのファイルシステムを操作するためのオブジェクトです。
利用すると、
フォルダ作成
ファイルコピー
ファイル削除
ファイル一覧取得
フォルダ一覧取得
ファイルサイズ取得
などが実現できます。
FileSystemObjectの準備
最初にオブジェクトを生成します。
Dim fso As Object
Set fso = _
CreateObject("Scripting.FileSystemObject")
これだけで利用できます。
逆引き① ファイルが存在するか確認したい
CSV取込前の定番チェックです。
If fso.FileExists( _
"C:\DATA\Test.csv") Then
MsgBox "存在します"
End If
実務例
CSV受信
↓
存在チェック
↓
取込実行
逆引き② フォルダが存在するか確認したい
バックアップ保存時によく利用します。
If fso.FolderExists( _
"C:\BACKUP") Then
MsgBox "存在します"
End If
逆引き③ フォルダを作成したい
存在しない場合に生成します。
fso.CreateFolder _
"C:\BACKUP"
実務活用
月次処理
↓
保存フォルダ作成
↓
PDF保存
逆引き④ ファイルをコピーしたい
バックアップの定番です。
fso.CopyFile _
"C:\DATA\Test.csv", _
"C:\BACKUP\Test.csv"
逆引き⑤ ファイルを削除したい
不要ファイル削除です。
fso.DeleteFile "C:\TEMP\Test.csv"
注意
重要ファイルへ実行しないように注意しましょう。
逆引き⑥ フォルダを削除したい
一時フォルダ削除です。
fso.DeleteFolder "C:\TEMP"
逆引き⑦ ファイルサイズを取得したい
空ファイル判定に便利です。
Dim objFile As Object
Set objFile = _
fso.GetFile( _
"C:\DATA\Test.csv")
MsgBox objFile.Size
実務例
CSV受信後
サイズ0
↓
エラー判定
が可能です。
逆引き⑧ ファイル名を取得したい
フルパスから取得します。
MsgBox _
fso.GetFileName( _
"C:\DATA\Test.csv")
結果
Test.csv
逆引き⑨ 拡張子を取得したい
ファイル形式判定です。
MsgBox _
fso.GetExtensionName( _
"C:\DATA\Test.csv")
結果
csv
逆引き⑩ フォルダ内ファイル一覧を取得したい
最も利用頻度が高い処理です。
Dim objFolder As Object
Dim objFile As Object
Set objFolder = _
fso.GetFolder("C:\DATA")
For Each objFile In _
objFolder.Files
Debug.Print _
objFile.Name
Next
結果
Test1.csv
Test2.csv
Test3.csv
実務活用例① CSV自動取込
フォルダ監視処理です。
受信フォルダ確認
↓
CSV一覧取得
↓
順番に取込
↓
完了フォルダ移動
非常に利用頻度が高い仕組みです。
実務活用例② PDF帳票管理
請求書保存です。
PDF出力
↓
年月フォルダ作成
↓
自動保存
ファイル名生成
strFile =
“請求書” & _
Format(Date, _
“yyyymm”) & _
“.pdf”
実務活用例③ ログ管理
処理ログ出力です。
実行開始
↓
ログ出力
↓
処理完了
↓
ログ保存
運用保守で役立ちます。
実務活用例④ バックアップ
更新前にコピーします。
マスタ更新
↓
バックアップ
↓
更新実施
トラブル対策になります。
実務活用例⑤ 古いファイル削除
ログ整理です。
90日以上経過
↓
自動削除
運用負荷を軽減できます。
FileSystemObjectとDirの違い
初心者が迷うポイントです。
Dir関数
Dir(strFile)
特徴
- 簡単
- 軽量
- 存在確認向け
FileSystemObject
FileExists
CopyFile
DeleteFile
特徴
- 高機能
- 保守しやすい
- 実務向け
Copilot活用術① フォルダ監視コード作成
Copilotへの依頼例です。
Access VBAです。
指定フォルダ内のCSVを
順番に取得するコードを
作成してください。
Copilot活用術② バックアップ機能作成
Access VBAです。
更新前にファイルを
バックアップする処理を
作成してください。
Copilot活用術③ コードレビュー
以下のFileSystemObjectコードを
レビューしてください。
品質向上に役立ちます。
FileSystemObject利用時の注意点
エラー処理を入れる
ファイルが存在しないケースがあります。
On Error GoTo ErrHandler
を追加しましょう。
削除処理は慎重に
DeleteFileは元に戻せません。
ネットワークフォルダを考慮する
共有フォルダではアクセス権限エラーが発生することがあります。
特に相性の良いシステム
FileSystemObjectは次のシステムで活躍します。
- CSV取込システム
- PDF出力システム
- 夜間バッチ処理
- バックアップシステム
- ログ管理システム
まとめ
FileSystemObjectはAccess VBAでファイル操作を自動化するための強力な機能です。
特に
- CSV取込
- PDF管理
- バックアップ
- ログ管理
- フォルダ監視
などの実務システムで活用できます。
またCopilotを組み合わせることで、
- サンプルコード生成
- エラー解析
- コードレビュー
も効率的に行えます。
Access VBAで業務自動化を進めたい方は、まずFileSystemObjectの基本操作から習得してみてください。

コメント