PR

Access VBA逆引き集|FileSystemObjectでフォルダ・ファイル操作を自動化する実践テクニックとCopilot活用術

VBA

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

  • CSVファイルを自動取込したい
  • フォルダ内のファイル一覧を取得したい
  • バックアップフォルダを自動作成したい
  • 古いファイルを削除したい
  • PDF出力後に所定フォルダへ保存したい

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

FileSystemObject(FSO)を活用することで、Windowsのフォルダやファイル操作を柔軟に自動化できます。

CSV取込やPDF出力、ログ管理などの実務システムとの相性も非常に良く、Access開発者なら覚えておきたいテクニックの一つです。


スポンサーリンク

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の基本操作から習得してみてください。

Amazon.co.jp

コメント

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