VBAテクニック集 VBA一覧 オブジェクト操作 削除・クリア(Delete / Clear)

【VBA】ファイルを削除する方法|Killステートメントの使い方と注意点

Excel業務を自動化していると、「不要になったファイルを削除したい」「出力フォルダを整理したい」「古いバックアップファイルだけ消したい」など、ファイル削除の処理が必要になる場面は非常に多くあります。手作業でエクスプローラーを開いて削除することも可能ですが、業務フローが複雑になるほど人の手によるファイル整理は手間が増え、削除漏れや誤削除のリスクも高まります。

そこで役に立つのが VBAの「Killステートメント」 です。

Kill を使うことで、指定したファイルを即時削除でき、さらにワイルドカードを利用すれば「特定の種類のファイルをまとめて削除する」といった高度な処理も簡単に実現できます。ただし、Kill はファイルを完全に削除する強力な命令であるため、使い方を誤ると必要なファイルまで消してしまう危険性があります。

本記事では、Killステートメントの基本構文から実務で使える応用テクニック、例外処理、エラー対策、注意点、RPAとの相性までわかりやすく解説します。ファイル操作を安全かつ効率的に自動化したい方に向けて、実務で役立つ情報をまとめています。

目次

✅ Killステートメントとは|ファイルを削除するVBA標準命令

・Killステートメントの基本構文

Killは以下のように記述します。

Kill "C:\test\data.xlsx"

この1行でファイルが完全に削除されます。

・Killで削除できるもの

  • Excelファイル(.xlsx、.xlsm、.xls)
  • CSV、TXT
  • PDF
  • 画像ファイル
  • 実行ファイル以外のほとんどのファイル

・Killでは削除できないもの

  • フォルダ(※フォルダ削除は RmDir を使用)
  • 開かれたままのファイル
  • 読み取り専用でロックされているファイル

✅ Killを使用する際の注意点|誤削除は元に戻せない

Kill で削除したファイルは、「通常の削除」と異なり ごみ箱に入らず完全削除される ケースがあります。

✔ 誤って削除すると復元できない可能性が高い

→ 使用前に必ずパスの確認が必要

✔ ワイルドカード使用時の誤爆に注意

→ *.xlsx などを扱う場合は特に危険

✔ エラーが発生しやすい処理

例:

  • ファイルが開かれている
  • アクセス権がない
  • パスが間違っている
  • 存在しないファイルをKillした

このため、事前チェックエラーハンドリング が必須になります。


✅ 【基本】特定のファイルを1つだけ削除する

・最もシンプルな削除コード

Sub DeleteSingleFile()
    Kill "C:\Test\Data.xlsx"
End Sub

・削除前に存在確認をする(安全性UP)

If Dir("C:\Test\Data.xlsx") <> "" Then
    Kill "C:\Test\Data.xlsx"
End If

Dir 関数で存在チェックを行い、ファイルがある場合のみ削除する方法です。


✅ 【応用】ワイルドカードで複数ファイルをまとめて削除

Kill の最大の特徴は ワイルドカードを使える こと。

・フォルダ内の XLSX ファイルをすべて削除

Kill "C:\Test\*.xlsx"

・特定の名前で始まるファイルを削除

例:temp で始まるファイル

Kill "C:\Test\temp*.csv"

・日付つきログファイルだけ消す

Kill "C:\Log\2023_*.txt"

ワイルドカードは非常に便利ですが、誤操作すると大量削除が起きるため注意が必要です。

参考:【VBA】ExcelVBAでワイルドカードを使ってファイルを自動で開く方法




✅ 【実務例】特定フォルダを“毎日クリーンアップ”する処理

業務で特に多いのがこのパターンです。

・1日前のログファイルなどを自動削除

Sub CleanUpLogFiles()

    Dim Target As String
    Target = "C:\Log\*.txt"

    If Dir(Target) <> "" Then
        Kill Target
    End If

End Sub

定期実行で不要ファイルが溜まらないようにできます。


✅ 【応用】開かれているファイルを削除しようとした場合の対処

Kill は「開いているファイル」には行えません。

・開いているかを事前に確認する例

Function IsFileOpen(path As String) As Boolean
    On Error Resume Next
    Open path For Binary Access Read Write Lock Read Write As #1
    Close #1

    If Err.Number <> 0 Then
        IsFileOpen = True
    Else
        IsFileOpen = False
    End If
End Function

使用例:

If Not IsFileOpen("C:\Test\Data.xlsx") Then
    Kill "C:\Test\Data.xlsx"
End If

✅ 【実務必須】エラーハンドリングで安全に削除する

Kill はエラーが起きやすいため、例外処理が非常に重要です。

On Error GoTo ERR_HANDLE

If Dir("C:\Test\Data.xlsx") <> "" Then
    Kill "C:\Test\Data.xlsx"
End If

Exit Sub

ERR_HANDLE:
MsgBox "ファイルを削除できませんでした:" & Err.Description

業務では、ログ記録や削除失敗レポートと組み合わせられることも多いです。

参考:【VBA】エラーハンドリングの基本と実務で使えるオープンエラーハンドリング徹底解説


✅ 【複数フォルダ対応】ループで大量ファイルを整理する

複数のフォルダに同名ファイルが存在するケースはよくあります。

・フォルダ一覧を回して削除する

Sub DeleteFilesInMultipleFolders()

    Dim folders As Variant
    folders = Array("C:\A\", "C:\B\", "C:\C\")

    Dim f As Variant

    For Each f In folders
        If Dir(f & "*.xlsx") <> "" Then
            Kill f & "*.xlsx"
        End If
    Next f

End Sub

フォルダ単位での整理に便利です。


❗ フォルダ削除は Kill ではできない(RmDir を使用)

Kill はファイル削除専用です。

・フォルダを削除する場合は RmDir

RmDir "C:\TestFolder"

ただし、フォルダ内にファイルが残っていると削除できないため、

  1. Kill で中身を削除
  2. RmDir でフォルダ削除

という流れが必要になります。


❗ ファイル削除で起こりやすいトラブルと回避策

・① 開いているファイルは削除できない

→ IsFileOpen 関数で事前チェック


・② 誤パスでエラー

→ Dir(path) の事前チェックが必須


・③ 権限不足で削除不可

→ ネットワークドライブに多い
→ エラー時のメッセージ処理が必須


・④ ワイルドカードにより大量の誤削除

→ 本番前にログ出力でテストが必要


・⑤ Windowsのファイルロックが残る

→ ウイルス対策ソフトでロックされる場合あり


❗ Killは「ごみ箱に入らないことがある」点を理解する

Kill の削除は状況によっては OS のレベルで “即削除” されるため、ごみ箱に行かない場合があります。

→ 安全設計のために「削除前にバックアップを取る」仕組みがよく使われる


❗ 誤削除防止の実務的な仕組み

  • 削除対象フォルダを固定化する
  • 本番フォルダを変数化しない
  • “削除候補ファイル一覧” を先にログ出力する
  • 削除実行前に MsgBox で確認を入れる
If MsgBox("削除しますか?", vbYesNo) = vbNo Then Exit Sub

こうした仕組みが誤勤務を防ぎます。


✅ RPA(UiPath)との連携で Kill はさらに価値が高まる

RPA(特にUiPath)はファイル操作に強いですが、「不要ファイルの事前整理」はVBAの方が柔軟で高速です。

✔ UiPath実行前にVBAで不要ファイル削除すると…

  • フォルダ内の検索時間が短縮
  • ファイル名のゆらぎによるフロー停止を防止
  • ループ処理が軽くなる
  • 古い一時ファイルの蓄積によるエラー防止

VBAとRPAの組み合わせは、ファイル管理の安定性を大きく向上させます。


❗ Kill の高速化のポイント

大量ファイルを削除する場合は高速化設定が有効です。

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False

削除後に元に戻します。


❗ ファイル削除処理の実務チェックリスト

  • 対象パスの正確性は?
  • 削除前に存在確認をしたか?
  • 開かれたファイルではないか?
  • 権限はあるか?
  • ワイルドカードの範囲が正しいか?
  • 必要であればバックアップを取ったか?
  • エラーハンドリングは入っているか?

✅ まとめ:Killステートメントを安全に使えばファイル管理が大幅に効率化する

VBAの Kill ステートメントは強力でありながら、正しい使い方を理解することで業務のファイル管理を飛躍的に効率化できます。

  • Kill はファイルを直接削除するVBA標準命令
  • ワイルドカードで大量ファイルの一括整理が可能
  • 存在確認(Dir)が安全性向上の基本
  • 開いているファイルは削除不可
  • エラーハンドリングで実務レベルの安定性
  • フォルダ削除は RmDir を使用
  • 誤削除のリスクを理解して運用設計を行う
  • RPA前のフォルダ整理にも非常に有効

ファイル削除の仕組みを自動化できると、煩雑なフォルダ管理が一気に楽になります。
ぜひ本記事の内容を参考に、実務に合わせて活用してみてください。

    -VBAテクニック集, VBA一覧, オブジェクト操作, 削除・クリア(Delete / Clear)