📘 Excel逆引き事典

【VBA】特定のフォルダ内の全ファイルを配列を使って高速に削除する方法

日々の業務では、大量の不要なファイルを手動で削除することが多いと思います。この記事では、特定のフォルダ内の全ファイルを高速に一括削除する方法を紹介します。労力を大幅に削減し、業務効率を向上させましょう。

サンプルコード

VBA
Option Explicit
Sub DeleteFilesInFolder()
    Dim fso As Object, folder As Object, file As Object
    Dim filePath As String, files() As Variant
    Dim i As Long
    
    ' 対象フォルダのパスを指定
    filePath = "C:\指定フォルダ\"
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    If Not fso.FolderExists(filePath) Then Exit Sub
    
    ReDim files(1 To 1)
    i = 0
    ' フォルダ内のファイルを配列に格納
    For Each file In fso.GetFolder(filePath).Files
        i = i + 1
        ReDim Preserve files(1 To i)
        files(i) = file.Path
    Next file
    
    Application.ScreenUpdating = False ' 画面更新停止
    On Error Resume Next ' エラー無視(警告オフ)
    For Each filePath In files
        fso.DeleteFile filePath, True ' ファイルを削除
    Next filePath
    On Error GoTo 0
    Application.ScreenUpdating = True ' 画面更新再開
End Sub

よくある質問

Q 元に戻せますか?

A.
VBAの実行結果は「元に戻す」が効きません。必ずバックアップを取ってから実行してください。

Q エラーが出たら?

A.
フォルダパスやファイル名に誤りがないか確認してください。また、削除権限があるかも確認しましょう。