【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.
フォルダパスやファイル名に誤りがないか確認してください。また、削除権限があるかも確認しましょう。