Option Explicit Call Main() Sub Main() Dim limit limit = GetLimit() ' = "2001_12_31" など。これより古いファイルを削除する。 Dim fileList, fso Set fileList = CreateObject("Scripting.Dictionary") Set fso = CreateObject("Scripting.FileSystemObject") Dim filePath ' ここに、削除すべきファイル名の一覧が格納される AddDeleteFiles fileList, fso.GetFolder("C:\temp\"), limit '列挙したファイルを削除する For Each filePath In fileList.Keys '.Keys → .Items でも可 fso.DeleteFile filePath, False Next End Sub Function GetLimit() Dim dt dt = DateAdd("d", -90, Date) '90日前の日づけ Dim ymd ymd = CStr(Year(dt) * 10000 + Month(dt) * 100 + Day(dt)) '"20011231"を、"2001_12_31" 形式に変換 GetLimit = Mid(ymd, 1, 4) & "_" & Mid(ymd, 5, 2) & "_" & Mid(ymd, 7, 2) End Function Sub AddDeleteFiles(ByVal oDict, ByVal parentFolder, ByVal limit) Dim oFolder, oFile For Each oFolder In parentFolder.SubFolders AddDeleteFiles oDict, oFolder, limit Next For Each oFile In parentFolder.Files If oFile.Name <= limit Then oDict.Add oFile.ShortPath, oFile.Path End If Next End Sub