【VBA】○○以前に更新されたファイルを削除する

VBAで
 ・○○以前に更新されたファイルを削除
できます!
※例えば更新日付が本日より7日以前になっているファイルを削除できます。

VBAから
 ・コマンドプロンプトのコマンドを実行
することで実現します!

PR

VBAコード

ここでは例として
 ・デスクトップ上のフォルダ「test」の配下のファイル「*.log」の
 ・更新日付が本日より7日以前になっているファイルを削除
します。
※今回は「本日:2022/11/21」、「7日以前:2022/11/14以前」です。
※上記の場合、更新日付が2022/11/14となっているファイルも削除されます。

デスクトップ上のフォルダ「test」の配下のファイル「*.log」
デスクトップ上のフォルダ「test」の配下のファイル「*.log」
Option Explicit

Sub sample()
    
    Dim targetFolder As String
    Dim targetFile As String
    Dim execCommand As String
    Dim wsh As Object
    Dim result As Integer
    
    '対象フォルダを指定
    targetFolder = "C:\Users\user\Desktop\test"
    '対象ファイルを指定
    targetFile = "*.log"
    'コマンドを組み立て
    execCommand = "forfiles /P " & targetFolder & " /M " & targetFile & " /D -7 /C " & """" & "cmd /c del @file" & """"
    
    Set wsh = CreateObject("WScript.Shell")
    
    'コマンドを実行
    result = wsh.Run(Command:=execCommand, WindowStyle:=0, WaitOnReturn:=True)
    
    If (result = 0) Then
        MsgBox ("正常終了しました。")
    Else
        MsgBox ("異常終了しました。")
    End If
    
    '後片付け
    Set wsh = Nothing
    
End Sub

対象フォルダを指定します(12行目)。
対象ファイルを指定します(14行目)。

「forfiles」コマンドにより、「○○以前に更新されたファイル」を削除します(16行目)。
※「/P」に対象フォルダを指定します。
※「/M」に対象ファイルを指定します。
※「/D」に「-数字」を指定します。上記では対象を7日以前とするため「-7」と指定しています。

「forfiles」コマンドを実行します(21行目)。

以下の場合、「forfiles」コマンドはエラーになります。
※エラーコード(1)が返ってきます。

・対象フォルダが存在しない
・対象ファイルが存在しない
・○○以前に更新されたファイル(今回は7日以前のファイル)が存在しない

PR

実行結果

○○以前に更新されたファイルを削除できました。
※更新日付が本日より7日以前になっているファイルを削除できました。

実行結果①
実行結果①
実行結果②
実行結果②
PR

参考①

上記のVBAコードは以下の記事を参考にして作成しました。

詳細は以下の記事をご確認ください。

PR

参考②

上記で使用した以下の詳細は、公式サイトをご確認ください。

●「forfiles」コマンド

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