和風スパゲティのレシピ

日本語でコーディングするExcelVBA

フォルダ内のすべてのファイルを削除する - Kill

フォルダ内のすべてのファイルを削除する方法を解説します。

Killステートメントのワイルドカード*を用いた一括削除を用いるのが簡単です。

Killステートメント

ファイルを削除するKillステートメントは、
ワイルドカード「*」を使用して複数のファイルを一括削除することができます。

この仕様を活用し「フォルダパス\*」を渡してKillステートメントを実行すると、
フォルダ内のすべてのファイルを削除することができます。

' フォルダ内のすべてのファイルを削除
Kill "C:\Users\wfsp\Desktop\対象フォルダ\*"

 
このコードを実行してもフォルダ内のフォルダは削除されませんし、
もちろん下層フォルダ内のファイルも削除されません。

このフォルダ直下のファイルだけが削除されます。


この方法を応用すれば特定の種類のファイルだけを消すことも可能です。

' エクセルファイルだけを削除
Kill "C:\Users\wfsp\Desktop\対象フォルダ\*.xls*"

' PDFファイルだけを削除
Kill "C:\Users\wfsp\Desktop\対象フォルダ\*.PDF"

便利ですが誤作動すると取り返しがつかないステートメントですので、
使用する際は細心の注意を払って使用してください。

FileSystemObject.DeleteFileメソッド

FileSystemObjectのDeleteFileメソッドを使用しても、
Killステートメントと同じ処理を行うことができます。

Dim FSO As New FileSystemObject

' フォルダ内のすべてのファイルを削除
FSO.DeleteFile "C:\Users\wfsp\Desktop\対象フォルダ\*"

' エクセルファイルだけを削除
FSO.DeleteFile "C:\Users\wfsp\Desktop\対象フォルダ\*.xls*"

' PDFファイルだけを削除
FSO.DeleteFile "C:\Users\wfsp\Desktop\対象フォルダ\*.PDF"

似ている処理の多いDirシリーズとFileSystemObjectですが、
このKillステートメントとDeleteFileメソッドもほぼ同じメソッドです。


細かい挙動もほぼ一致しており、

  • 通常使用する引数は「削除したいファイルのパス」1つだけ
  • ワイルドカードを使用した一括削除が可能
  • 存在しないファイルを指定するとエラー
  • ワイルドカード使用時に該当ファイルが1つもないとエラー
  • 開いているファイルを指定するとエラー
  • 1つ開いて一括削除した場合はそのファイルまで削除してからエラー
  • フォルダパスを省略した場合はカレントフォルダのファイルを削除

これらの仕様は全く同じになっています。


Unicode文字が使えることだけが相違点ですので、
その必要があればこちらを使用してください。