ハウスキープってなんぞ?
- ログファイル
- バックアップとして自動で出力したPDFやCSVファイル
なんかがずーっと貯まり続けてストレージを圧迫しないように、古いやつを消す処理のこと。
参照設定
この記事の例は FileSystemObject クラスを使うので、VBEの参照設定で Microsoft Scripting Runtime にチェックを入れる必要があります。
指定フォルダー内の古いファイルは全て削除、サブフォルダーは即削除
『フォルダーパス』と『ファイルは何日間保存するか』を引数としてもらいます。
Public Function Housekeep(ByVal folder_path As String, ByVal save_days As Long)
Dim fso_ As New FileSystemObject
Dim file_ As file
For Each file_ In fso_.GetFolder(folder_path).Files
If file_.DateCreated < DateAdd("d", -1 * save_days, Now()) Then
fso_.DeleteFile (file_.Path)
End If
Next
Dim folder_ As Folder
For Each folder_ In fso_.GetFolder(folder_path).SubFolders
fso_.DeleteFolder (folder_.Path)
Next
End Function
- 拡張子は考慮しません。
- サブフォルダーはイレギュラーとし、作成日に寄らず即削除します。(サブフォルダー内にさらにサブフォルダーやファイルがある場合は再帰的に削除されます)
- 削除判定の閾値はそこまで厳密にしていません。(コードの読みやすさ優先)
蛇足
『指定拡張子のみ削除』『サブフォルダー内のファイルについても再帰的に作成日をチェックして…』
などなど、細かく指定しようと思えばいくらでもできます。
けど、引数が多くなるし処理も複雑になってコードを理解するのに時間がかかる… 。
CSVならCSV用のフォルダに出力!
ログならログ用のフォルダに出力!
そして、出力先フォルダ内のファイルはとにかく一定期間過ぎたら消す!
…というように 仕様はできる限りシンプルに した方がいいと思います。
バージョン
Windows10 Pro バージョン1909 OSビルド19042.630
Access for Microsoft 365 MSO(16.0.13328.20334)32ビット