エクセルVBAでフォルダ内のファイルを一括で削除する

エクセルVBAで任意のフォルダ内にあるファイルを、一括で削除する方法を紹介します。ファイルの削除には、Killステートメントを使用します。ファイル名にワイルドカードを指定することで、フォルダ内のファイルを全て削除したり、一部のファイルを削除することもできます。定期的に、特定のフォルダ内にある不要になったファイルを削除するには、便利です。一部のファイルだけ削除したい場合は、誤って必要なファイルを削除することもできません。使い方によって色々なファイルが削除できます。

 

 

Killステートメントはファイルを削除します。Windowsの場合、ファイル名にワイルドカード「*」や「?」を指定できます。

Killステートメントの構文

Kill filename

ワイルドカード「*」や「?」をファイル名に使用することで、フォルダ内の一部だけファイルを削除することもできます。

 

 

フォルダ内のファイルを削除する

エクセルVBAで、フォルダ内のファイルを削除してみましょう。

Sub フォルダ内のファイルの削除()
Kill “D:\2017年度\*.xlsx”
End Sub

「2017年度」フォルダにある拡張子「xlsx」のエクセルファイルが、全て削除されます。

拡張子「xls」を含む全てのファイルを削除したい場合は、次のようになります。

Sub フォルダ内のファイルの削除()
Kill “D:\2017年度\*.xls*”
End Sub

拡張子「xls」と「txt」を含む全てのファイルを削除したい場合は、次のようになります。

Sub フォルダ内のファイルの削除D()
Kill “D:\2017年度\*.xls*”
Kill “D:\2017年度\*.txt”
End Sub

フォルダ内のファイルをすべて削除するVBAです。

Sub フォルダ内のファイルをすべて削除()
Kill “D:\2017年度\*”
End Sub

もし、「2017年度」フォルダにファイルが存在しなかったら、エラーになってしまいます。

 

エラーを回避する方法が、次に紹介してあります

 

 

フォルダ内のファイルを削除(ファイルが存在しない場合エラーを回避)

フォルダ内のファイルを削除しましょう。ファイルが存在しない場合、エラーを回避するVBAです。

Sub フォルダ内のファイルの削除A()
Dim FName As String
Const Path As String = “D:\2017年度\”
FileName = Dir(Path & “*.xlsx”)
If FileName = “” Then
MsgBox “フォルダにファイルがありません。”
Else
Kill “D:\2017年度\*.xlsx”
MsgBox “ファイルを削除しました。”
End If
End Sub

ファイルが存在した場合、拡張子「xlsx」のファイルが全て削除されます。

一部のファイルを削除

エクセルVBAでフォルダ内のファイルを削除する場合は、Killステートメントを使用します。Killステートメントのファイル名にワイルドカードを指定して、フォルダ内のファイルを全て削除したり、一部だけ削除することもできます。VBAで削除するファイルを指定することによって、必要なファイルを削除することもなくなります。定期的なファイルの削除は、Killステートメントで実行しましょう。

こちらの記事もご覧ください。⇒エクセルVBAでフォルダ内のファイル名を一括で変更する