[ VBA ] ワイルドカード指定でファイルの一括削除 ( kill / FileSystemObject.DeleteFile )

Pocket

ここでは、1つずつファイルを削除する方法と複数のファイルを一括して削除するサンプルスクリプトを掲載しています。

スポンサーリンク

ファイルを1つずつ削除

ファイルパスを指定して削除するサンプルスクリプトです。kill ステートメントを使用する方法と FileSystemObject を使用する2つ方法を掲載しています。

' kill ステートメントを使用する場合
Kill "E:\dir\test1.txt"

' FileSystemObject を使用する場合
With CreateObject("Scripting.FileSystemObject")
    .DeleteFile "E:\dir\test1.txt"
End With

良くあるエラーとしてはファイルが存在しない場合に、以下のように実行時エラーが発生します。従って Dir 関数などを使用してのファイルの存在確認は必須です。または、On Error Resume Next でエラーを無視するかです。

実行時エラー '53' : ファイルが見つかりません

実行時エラー ’53’ : ファイルが見つかりません

他のアプリが開いていても、案外削除されます。エラーを発生させることができませんでした。。。。

複数のファイルを一括削除(ワイルドカード指定)

Kill ステートメントおよび、FileSystemObject.DeleteFile はワイルドカード指定で複数のファイルを一括して削除することができます。

ワイルドカードとは、ファイル名に、「 * 」 や 「 ? 」 を使用できます。「 * 」 は任意の文字列を、「 ? 」 は任意の1文字を意味します。つまり、「 ?? 」 は任意の2文字を意味することになります。

設定例 内容
* すべてのファイル
*.* すべてのファイル(拡張子なしのファイルもこの設定で削除される)
TEST* ファイル名がTESTで始まるすべてのファイル
TEST?????? ファイル名がTESTで始まり、以降の文字が6文字のファイル
*.txt 拡張子が 「 .txt 」 のすべてのファイル
' 拡張子が .xlsx のファイルを全て削除
Kill "E:\dir\*.xlsx"

' すべてのファイルを削除する
With CreateObject("Scripting.FileSystemObject")
    .DeleteFile "E:\dir\*"
End With

スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *