【2026年7月最新】VBAのKillステートメント完全ガイド|ファイル削除・一括削除・エラー処理まで実践コード付きで解説

【2026年7月最新】VBAのKillステートメント完全ガイド|ファイル削除・一括削除・エラー処理まで実践コード付きで解説

「Excelマクロで処理後に不要な一時ファイルを自動削除したい」「一定期間が過ぎた古いログファイルを定期的にまとめて削除したい」「バックアップフォルダの古いファイルをマクロで整理したい」——VBAでファイルを自動削除する処理は、業務自動化マクロで頻繁に必要になります。

VBAでファイルを削除するには、組み込みの「Killステートメント」が最もシンプルな方法です。この記事では、Killステートメントの基本構文から始め、ワイルドカードを使った一括削除・Dir関数による存在確認・エラー処理付きの安全なパターン・フォルダ削除(RmDir)・FileSystemObjectとの比較・業務実践パターンまで、コード例を豊富に交えて完全解説します。

代表菅澤 代表菅澤
弊社のExcel業務自動化では、「毎月処理後に前月の一時ファイルを自動削除する」「バッチ処理のたびに前回の出力を消してから新しいファイルを作る」といった用途でKillを多用しています。1行で書けるシンプルさが魅力ですが、「誤削除の防止」「ファイルが存在しない場合のエラー処理」は必ず実装してください。
✔️Killステートメントの基本構文:絶対パス・相対パス・ThisWorkbook.Pathの使い方
✔️ワイルドカード一括削除:*.xlsx・Sample*・backup_???の活用パターン
✔️Dir関数による存在確認:削除前にファイルの存在を確認して安全に削除する
✔️エラー処理との組み合わせ:On Error GoToで予期せぬエラーに対処する
✔️フォルダ削除:RmDirでの空フォルダ削除と、フォルダ内ファイルを全削除してからフォルダを削除するパターン
✔️FileSystemObjectとの比較:どちらを使うべきかの判断基準
Claude Code 完全解説セミナー|経営者・会社役員専用 1on1 60分 無料Claude Codeを経営に活かしたい方へ — AI鬼管理
📌 この記事の結論
【2026年7月最新】VBAのKillステートメント完全ガイド|ファイル削除・一括削除・エラー処理まで実践コード付きで解説
VBAのKillステートメントを完全解説。単一ファイル削除・ワイルドカード一括削除・Dir関数での存在確認・エラー処理・フォルダ削除(RmDir)・FileSystemObjectとの比較まで実践コード付きで解説。業務マクロでのファイル整理・ログ削除に即使えます。

01 VBAのファイル操作の全体像 Kill以外のファイル操作命令を整理して全体像を把握する

VBAにはファイルやフォルダを操作するための組み込み命令が複数あります。Killステートメントはその中の「ファイル削除」を担う命令です。まずVBAのファイル操作の全体像を把握してから、Killの詳細に入ります。

命令操作内容使用例
Killファイルを削除Kill "C:\Data\old.xlsx"
FileCopyファイルをコピーFileCopy "元", "先"
Name ... As ...ファイル名変更・移動Name "旧" As "新"
MkDirフォルダを作成MkDir "C:\NewFolder"
RmDir空のフォルダを削除RmDir "C:\OldFolder"
Dirファイル/フォルダの存在確認If Dir("path") <> "" Then ...
Open / Closeファイルを開く/閉じる(テキスト操作)Open "path" For Input As #1

📚 用語解説

Killステートメント:VBA組み込みのファイル削除命令。「Kill ファイルパス」の1行でWindowsファイルシステム上のファイルを削除します。削除されたファイルはごみ箱には入らず完全削除されます。そのため削除前に「本当に削除していいか」の確認や、バックアップを取る処理と組み合わせることを推奨します。ワイルドカード(*・?)も使えます。

⚠️ Killで削除したファイルはごみ箱に入らない

Killステートメントで削除したファイルはWindowsのごみ箱に入らず、完全削除されます。「誤って削除してしまった」という事故を防ぐため、Killを使う前には「削除対象のファイル一覧をログに記録する」または「DeleteToRecycleBin(FileSystemObjectのDeleteFileの引数でごみ箱送りにする)を使う」などの対策を検討してください。

02 Killステートメントの基本構文と単一ファイル削除 絶対パス・相対パス・ThisWorkbook.Pathを使ったファイル削除

Killステートメントの構文は「Kill ファイルパス」の1行だけです。ファイルパスは文字列(ダブルクォートで囲む)または文字列型変数で指定します。削除するファイルが存在しない場合はランタイムエラー53「File not found」が発生します。

' === Killの基本構文 ===
Kill "ファイルのフルパス"

' === パスの指定パターン ===

' 1. 絶対パスで直接指定
Kill "C:\Data\old_report.xlsx"

' 2. 変数にパスを入れて指定
Dim filePath As String
filePath = "C:\Data\temp_output.csv"
Kill filePath

' 3. ThisWorkbook.Pathを使って現在のファイルと同じフォルダのファイルを削除
Kill ThisWorkbook.Path & "\backup.xlsx"

' 4. バックスラッシュを確実に付けるためにApplication.PathSeparatorを使う
Kill ThisWorkbook.Path & Application.PathSeparator & "log.txt"
' ※Application.PathSeparatorはWindowsでは"\"、Macでは"/"を返す

2-1. 削除前にMsgBoxで確認するパターン

業務マクロで重要なファイルを削除する場合は、実行前にユーザーに確認を求めるMsgBox(vbYesNo)を入れることで誤削除を防げます。マクロの途中で呼ばれる場合など、ユーザーが意図していない削除が発生しないようにする防御策です。

' 削除確認ダイアログを表示してからKill
Sub DeleteWithConfirmation()
    Dim filePath As String
    filePath = ThisWorkbook.Path & "\monthly_report_old.xlsx"

    ' ファイルの存在確認
    If Dir(filePath) = "" Then
        MsgBox "ファイルが見つかりません: " & filePath, vbExclamation
        Exit Sub
    End If

    ' 確認ダイアログ
    Dim answer As Integer
    answer = MsgBox("以下のファイルを削除しますか?" & vbCrLf & filePath, _
                    vbYesNo + vbQuestion, "削除確認")

    If answer = vbYes Then
        Kill filePath
        MsgBox "削除しました: " & filePath, vbInformation
    Else
        MsgBox "キャンセルしました", vbInformation
    End If
End Sub
AI鬼管理山崎 AI鬼管理山崎
vbYesNoをMsgBoxに指定すると「はい/いいえ」ボタンが表示されます。vbYesの場合だけKillを実行することで、誤実行による不意の削除を防げます。特に毎月実行するマクロに削除処理がある場合は、このパターンを使うことを強く推奨します。

03 ワイルドカードで複数ファイルを一括削除する 拡張子・ファイル名パターン・全ファイルの一括削除方法

Killステートメントではワイルドカードを使ってパターンに一致する複数のファイルを一括削除できます。「*」(0文字以上の任意の文字列)と「?」(任意の1文字)が使えます。ワイルドカードを使うと、拡張子が同じファイルを全部削除する・特定のプレフィックスで始まるファイルを全部削除するといった操作が1行で実現できます。

📚 用語解説

ワイルドカード(Kill/Dirで使用):ファイルパスの指定で使える特殊文字。「*(アスタリスク)」は0文字以上の任意の文字列にマッチ("*.xlsx"はxlsx拡張子の全ファイル)、「?(クエスチョン)」は1文字の任意の文字にマッチ("data_??.csv"は"data_01.csv"など)。Killでのワイルドカードはフォルダ内の直接の子ファイルにのみ適用されます(サブフォルダは対象外)。

' ワイルドカードを使った一括削除

' 1. 拡張子で絞り込んで一括削除(フォルダ内の全csvファイルを削除)
Kill "C:\Temp\*.csv"

' 2. ファイル名の先頭で絞り込む(tempで始まる全ファイルを削除)
Kill "C:\Data\temp*.*"

' 3. 全ファイルを削除(フォルダ内の全ファイル)
Kill "C:\Temp\*.*"

' 4. 特定パターンのファイル名(backup_YYMMDD形式の6桁日付)
Kill "C:\Backup\backup_??????.xlsx"

' 5. 特定のフォルダ配下の全xlsxファイル
Kill ThisWorkbook.Path & "\output\*.xlsx"

' 注意: ワイルドカードで一致するファイルが存在しない場合はエラー53が発生
' → 必ずDir+On Error Resumeで存在確認してから使う

3-1. ワイルドカード削除前の存在確認

ワイルドカードを使ったKillは、一致するファイルが1件もない場合にエラー53が発生します。これを防ぐには、削除前にDir関数でワイルドカードパターンに一致するファイルが存在するか確認します。

' ワイルドカードでの安全な一括削除
Sub SafeWildcardDelete()
    Dim folderPath As String
    Dim pattern As String
    folderPath = "C:\Temp\"
    pattern = "*.csv"

    ' ワイルドカードに一致するファイルが存在するか確認
    If Dir(folderPath & pattern) = "" Then
        MsgBox folderPath & " に " & pattern & " ファイルはありません", vbInformation
        Exit Sub
    End If

    ' 存在する場合のみ削除
    On Error GoTo DeleteError
    Kill folderPath & pattern

    MsgBox folderPath & " の全 " & pattern & " を削除しました", vbInformation
    Exit Sub

DeleteError:
    MsgBox "削除中にエラー: " & Err.Description, vbCritical
End Sub
代表菅澤 代表菅澤
「毎月月末に先月の一時ファイルを全部消す」という自動化では、Kill "C:\Temp\*.xlsx" + Dir確認の組み合わせを使っています。一致するファイルが0件のときにエラーで止まらないように、Dir確認を必ず入れるルールにしています。
Claude Code 完全解説セミナー|経営者・会社役員専用 1on1 60分 無料Claude Codeを経営に活かしたい方へ — AI鬼管理

04 Dir関数でファイル存在確認してから削除する 安全なファイル削除の基本パターン:削除前に存在確認

Dir関数は指定したパスのファイル・フォルダが存在するか確認するVBA組み込み関数です。ファイルが存在すればそのファイル名(文字列)を返し、存在しなければ空文字列("")を返します。Kill実行前にDirで確認することで「ファイルが存在しない場合のエラー53」を回避できます。

📚 用語解説

Dir関数:ファイル・フォルダの存在確認と一覧取得に使うVBA組み込み関数。「Dir(パス)」でパスのファイルが存在すればファイル名を返し、存在しなければ空文字("")を返します。ワイルドカードも使えます。Dir(パス, vbDirectory)でフォルダの存在確認もできます。

' Dir関数でファイル存在確認してからKillする基本パターン

' ===== パターン1: If Dir() <> "" Then Kill =====
Sub DeleteIfExists_Simple()
    Dim filePath As String
    filePath = "C:\Data\report.xlsx"

    If Dir(filePath) <> "" Then
        Kill filePath
        Debug.Print "削除完了: " & filePath
    Else
        Debug.Print "ファイルなし(スキップ): " & filePath
    End If
End Sub

' ===== パターン2: 関数化して再利用しやすく =====
Function DeleteFileIfExists(filePath As String) As Boolean
    If Dir(filePath) <> "" Then
        On Error Resume Next
        Kill filePath
        Dim success As Boolean
        success = (Err.Number = 0)
        On Error GoTo 0
        DeleteFileIfExists = success
    Else
        DeleteFileIfExists = False  ' ファイルなし
    End If
End Function

' 使い方
Sub TestDeleteFile()
    If DeleteFileIfExists("C:\Data\old.xlsx") Then
        MsgBox "削除成功"
    Else
        MsgBox "削除失敗またはファイルなし"
    End If
End Sub
💡 Dir関数のループで一致するファイル一覧を取得

Dir関数は最初の呼び出し後に引数なしでDir()と呼ぶと次のファイル名を返します(ループ用)。これを使って「削除対象ファイルの一覧を先に取得して確認する」という安全策を実装できます。

' Dir関数のループで削除対象ファイル一覧を取得してから削除
Sub PreviewAndDelete()
    Dim folderPath As String
    folderPath = "C:\Backup\"
    Dim pattern As String
    pattern = "*.xlsx"

    ' まず一覧を取得
    Dim fileList As String
    Dim fileName As String
    fileName = Dir(folderPath & pattern)
    Dim count As Integer
    count = 0

    Do While fileName <> ""
        fileList = fileList & fileName & vbCrLf
        count = count + 1
        fileName = Dir()  ' 次のファイル名
    Loop

    If count = 0 Then
        MsgBox "削除対象なし", vbInformation
        Exit Sub
    End If

    ' 確認ダイアログで一覧表示
    Dim answer As Integer
    answer = MsgBox(count & "件のファイルを削除します:" & vbCrLf & fileList, _
                    vbOKCancel + vbExclamation, "削除確認")
    If answer = vbOK Then
        Kill folderPath & pattern
        MsgBox count & "件削除完了", vbInformation
    End If
End Sub

05 エラー処理付きの安全なファイル削除パターン 本番マクロで使える堅牢なKillの実装テンプレート

本番業務マクロでKillを使う場合は、On Error GoToによるエラー処理を組み合わせます。ファイルが別のアプリで開かれている場合(エラー70)・パスが正しくない場合(エラー76)・削除権限がない場合(エラー70)など、様々なエラーに対処できるテンプレートを紹介します。

' 本番マクロで使える安全なファイル削除テンプレート
Sub SafeDeleteTemplate()
    Dim filePath As String
    filePath = "C:\Data\monthly_temp.xlsx"

    ' 存在確認
    If Dir(filePath) = "" Then
        ' ファイルが存在しない場合はスキップ(エラーにしない)
        Debug.Print "スキップ(存在なし): " & filePath
        Exit Sub
    End If

    On Error GoTo DeleteError

    Kill filePath
    Debug.Print "削除完了: " & filePath
    Exit Sub

DeleteError:
    Select Case Err.Number
        Case 70  ' Permission denied(他アプリで開かれている)
            MsgBox "ファイルが他のアプリで開かれています。" & vbCrLf & _
                   "閉じてから再実行してください: " & filePath, vbExclamation
        Case 76  ' Path not found(フォルダが存在しない)
            MsgBox "フォルダが見つかりません: " & filePath, vbCritical
        Case Else
            MsgBox "削除エラー(" & Err.Number & "): " & Err.Description & vbCrLf & _
                   "対象: " & filePath, vbCritical
    End Select
End Sub
AI鬼管理山崎 AI鬼管理山崎
エラー70(Permission denied)は「Excelが自分でそのファイルを開いているとき」にも発生します。マクロで一時ファイルを作成→処理→削除の流れでは、「ファイルをCloseしてから削除する」ことを確認してください。ファイルを開いたまま削除しようとするとエラー70が出ます。

06 フォルダの削除(RmDir・再帰的削除) RmDirでの空フォルダ削除と、フォルダを中身ごと削除するパターン

VBAでフォルダを削除するには「RmDir フォルダパス」を使います。ただしRmDirは空のフォルダしか削除できません。フォルダの中にファイルが残っている場合はエラーになります。「フォルダを中身ごと削除したい」場合は、先にKillでフォルダ内の全ファイルを削除してから、RmDirでフォルダを削除する2ステップが必要です。

📚 用語解説

RmDir(リムーブ・ディレクトリ):VBAでフォルダ(ディレクトリ)を削除する組み込み命令。「RmDir フォルダパス」で指定したフォルダを削除します。RmDirが機能するのは空のフォルダのみです。ファイルやサブフォルダが残っているフォルダを削除しようとするとエラー75「Path/File access error」が発生します。

' フォルダを中身ごと削除する2ステップパターン
Sub DeleteFolderWithContents()
    Dim folderPath As String
    folderPath = "C:\Temp\work_folder"

    ' フォルダが存在するか確認
    If Dir(folderPath, vbDirectory) = "" Then
        MsgBox "フォルダが見つかりません: " & folderPath, vbExclamation
        Exit Sub
    End If

    On Error GoTo DeleteError

    ' Step 1: フォルダ内の全ファイルを削除
    If Dir(folderPath & "\*.*") <> "" Then
        Kill folderPath & "\*.*"
    End If

    ' Step 2: 空になったフォルダを削除
    RmDir folderPath

    MsgBox "フォルダを削除しました: " & folderPath, vbInformation
    Exit Sub

DeleteError:
    MsgBox "フォルダ削除エラー(" & Err.Number & "): " & Err.Description, vbCritical
End Sub
⚠️ サブフォルダがある場合はKill + RmDirだけでは不足

Kill *.* でサブフォルダは削除できません。フォルダにサブフォルダが含まれる場合は「再帰的削除(全サブフォルダを順に処理)」か「FileSystemObjectのDeleteFolder( Force:=True)」を使う必要があります。業務で深い階層のフォルダを削除する場合はFileSystemObjectを使う方が簡単です。

Claude Code 完全解説セミナー|経営者・会社役員専用 1on1 60分 無料Claude Codeを経営に活かしたい方へ — AI鬼管理

07 KillとFileSystemObject(FSO)の比較 どちらを使うべきか、用途別の選択基準

VBAでのファイル削除はKillステートメント以外に「FileSystemObject(FSO)のDeleteFileメソッド」も使えます。FSOはMicrosoft Scripting RuntimeのCOMオブジェクトで、Killより機能が豊富ですが参照設定または遅延バインディングが必要です。

📚 用語解説

FileSystemObject(FSO):Microsoft Scripting Runtimeが提供するファイルシステム操作オブジェクト。DeleteFile・DeleteFolder・CopyFile・MoveFile・CreateFolder・FileExistsなど豊富なメソッドを提供します。「ごみ箱に送る(DeleteFile path, Force:=True)」はできませんが、Killよりエラーメッセージが分かりやすく、フォルダを再帰的に削除するDeleteFolderが使えます。VBEの参照設定でMicrosoft Scripting Runtimeを追加するか、CreateObject("Scripting.FileSystemObject")で使います。

比較軸Kill(組み込み)FileSystemObject.DeleteFile
記述量1行(Kill パス)3〜5行(FSO作成→削除)
参照設定不要MSScripting Runtime追加またはCreateObject
ワイルドカード使用可使用不可(ファイルパス固定)
フォルダを再帰削除できないDeleteFolderで可能
ごみ箱送りできないできない(完全削除のみ)
エラーメッセージVBA標準エラーFSOの独自例外(より詳細)
推奨用途ワイルドカード一括削除・シンプルな削除フォルダ再帰削除・複雑なファイル操作
' FileSystemObjectでのファイル削除
Sub DeleteWithFSO()
    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")

    Dim filePath As String
    filePath = "C:\Data\old_report.xlsx"

    ' ファイル存在確認(FSOのFileExistsメソッド)
    If fso.FileExists(filePath) Then
        fso.DeleteFile filePath
        MsgBox "削除完了", vbInformation
    Else
        MsgBox "ファイルが存在しません", vbExclamation
    End If

    Set fso = Nothing  ' オブジェクトを解放
End Sub
💡 どちらを選ぶか(KillとFSO)

ワイルドカードで複数ファイルを一括削除したい場合はKillを使います。サブフォルダを含むフォルダ全体を削除したい場合や、FileExists/FolderExistsなどの便利なメソッドを使いたい場合はFSOが適しています。1つのマクロで両方使い分けることも問題ありません。

08 業務での実践活用パターン バックアップ整理・ログクリーンアップ・一時ファイル削除の実装例

8-1. 古いバックアップファイルを自動削除(日付判定)

' 30日以上古いバックアップファイルを削除
Sub DeleteOldBackups()
    Dim backupFolder As String
    backupFolder = "C:\Backup\"

    Dim cutoffDate As Date
    cutoffDate = Date - 30  ' 30日前の日付

    Dim fileName As String
    fileName = Dir(backupFolder & "*.xlsx")

    Dim deletedCount As Integer
    Dim skippedCount As Integer

    Do While fileName <> ""
        Dim fullPath As String
        fullPath = backupFolder & fileName

        ' ファイルの更新日時を確認
        Dim fileDate As Date
        fileDate = FileDateTime(fullPath)

        If fileDate < cutoffDate Then
            ' 30日以上古い → 削除
            On Error Resume Next
            Kill fullPath
            If Err.Number = 0 Then
                deletedCount = deletedCount + 1
                Debug.Print "削除: " & fileName & " (" & Format(fileDate, "yyyy/mm/dd") & ")"
            Else
                Debug.Print "削除失敗: " & fileName & " - " & Err.Description
                Err.Clear
            End If
            On Error GoTo 0
        Else
            skippedCount = skippedCount + 1
        End If

        fileName = Dir()  ' 次のファイル
    Loop

    MsgBox "完了: 削除=" & deletedCount & "件 / 保持=" & skippedCount & "件", vbInformation
End Sub
代表菅澤 代表菅澤
このパターンは弊社でも使っています。毎月自動実行するバッチ処理マクロの末尾に「30日以上古いバックアップを削除する処理」を入れることで、バックアップフォルダが肥大化するのを防いでいます。FileDateTime関数でファイルの更新日時が取得できるのがポイントです。

8-2. 処理後の一時ファイルを自動削除するテンプレート

' 処理中に一時ファイルを作り、処理完了後に削除するテンプレート
Sub ProcessWithTempFile()
    Dim tempPath As String
    tempPath = ThisWorkbook.Path & "\temp_" & Format(Now, "yyyymmddHHmmss") & ".xlsx"

    On Error GoTo CleanupAndError

    ' Step 1: 一時ファイルを作成
    Dim tempWb As Workbook
    Set tempWb = Workbooks.Add
    tempWb.SaveAs tempPath

    ' Step 2: 一時ファイルを使った処理
    tempWb.Sheets(1).Cells(1, 1).Value = "処理データ"
    ' ...(データ処理)...

    ' Step 3: 処理完了後に一時ファイルを閉じて削除
    tempWb.Close False
    Set tempWb = Nothing

    If Dir(tempPath) <> "" Then
        Kill tempPath
        Debug.Print "一時ファイル削除完了"
    End If

    MsgBox "処理完了", vbInformation
    Exit Sub

CleanupAndError:
    Dim errMsg As String
    errMsg = "エラー(" & Err.Number & "): " & Err.Description

    ' エラー時もファイルをクリーンアップ
    On Error Resume Next
    If Not tempWb Is Nothing Then tempWb.Close False
    If Dir(tempPath) <> "" Then Kill tempPath
    On Error GoTo 0

    MsgBox "エラーが発生しました。" & vbCrLf & errMsg, vbCritical
End Sub

09 よくある失敗とデバッグのポイント Kill使用時によく発生するエラーと対処法

エラー原因対処法
エラー53 File not foundKillするファイルが存在しないKill前にDir()で存在確認
エラー70 Permission deniedファイルが別のアプリ(Excel含む)で開かれているファイルを閉じてからKill。Workbook.Closeを先に実行
エラー76 Path not found指定したフォルダが存在しないフォルダパスの確認。Dir(folder, vbDirectory)でフォルダ存在確認
ワイルドカード削除で一部削除されない読み取り専用属性のファイルは削除できないSetAttr file, vbNormalで属性をクリアしてからKill
' 読み取り専用ファイルを削除するための属性クリア
Sub DeleteReadOnlyFile()
    Dim filePath As String
    filePath = "C:\Data\readonly_file.xlsx"

    If Dir(filePath) = "" Then
        MsgBox "ファイルが見つかりません", vbExclamation
        Exit Sub
    End If

    ' 読み取り専用属性を確認
    If GetAttr(filePath) And vbReadOnly Then
        ' 読み取り専用を解除してから削除
        SetAttr filePath, vbNormal
    End If

    Kill filePath
    MsgBox "削除完了(読み取り専用を解除して削除)"
End Sub
AI鬼管理山崎 AI鬼管理山崎
エラー70が出てKillできない場合、VBAで一時ファイルとして作ったExcelブックが「まだWorkbooks内に残っている」ことがよくある原因です。「Workbook.Close → Kill」の順番を必ず守ることと、Set wb = Nothingでオブジェクト参照を解放してから削除することで解決できます。
Claude Code 完全解説セミナー|経営者・会社役員専用 1on1 60分 無料Claude Codeを経営に活かしたい方へ — AI鬼管理

10 Claude CodeでVBAファイル削除コードを自動生成 ファイル整理・削除ロジックをAIで瞬時に生成する方法

VBAのKillステートメントを使ったファイル削除処理は、「どのファイルを・どの条件で・エラー時にどう処理するか」が決まれば、Claude Codeに任せることができます。特に「一定期間前のファイルを削除」「特定フォルダの特定拡張子を一括削除」のような業務要件は、要件を日本語で伝えるだけで実装できます。

✔️具体的な削除条件を伝える:「C:\Backupフォルダの中のxlsxファイルで、30日以上前のものを削除して」
✔️エラー処理の要件を明示:「ファイルが見つからない場合はスキップして、削除できない場合はエラーメッセージを出して」
✔️安全策を指定する:「削除前に確認ダイアログを出して、対象ファイルの一覧も表示して」
✔️既存コードの修正も依頼可能:「このKillコードにDir確認とエラー処理を追加して」
代表菅澤 代表菅澤
Claude Codeに「このフォルダのtempで始まるファイルを全部削除するVBAを書いて、削除前に確認を取って、エラーになったらエラーログシートに記録して」という要件を伝えると、このページで紹介したすべての要素(Dir確認・ワイルドカード・MsgBox・On Error GoTo・エラーログ)を組み合わせたコードを生成してくれます。

11 まとめ VBA Killステートメントの全体像と安全な使い方

この記事では、VBAのKillステートメントによるファイル削除を11セクションで完全解説しました。基本構文・ワイルドカード一括削除・Dir確認・エラー処理・RmDir・FSOとの比較・業務実践パターンまで体系的に整理しました。

✔️Kill "パス":1行でファイル削除。ごみ箱には入らず完全削除
✔️ワイルドカード:Kill *.xlsx・Kill temp* で一致する全ファイルを一括削除
✔️Dir確認必須:Kill前にDir()でファイル存在を確認(エラー53を防ぐ)
✔️エラー70対策:ファイルを閉じてからKill(Workbook.Close → Kill の順序)
✔️RmDir:空フォルダを削除。中身があるフォルダはKill→RmDirの2ステップ
✔️FSO使いどころ:サブフォルダを含む再帰削除はFileSystemObject.DeleteFolderが便利
代表菅澤 代表菅澤
Kill + Dir確認 + On Error GoToDの三点セットが業務マクロにおける安全なファイル削除の基本です。誤削除・エラーによる中断・後処理の漏れを防ぐテンプレートを一度作れば、どのマクロでも使い回せます。

VBAファイル操作自動化、Claude Codeで即設計します

「マクロで古いファイルを自動整理したい」「バックアップフォルダのクリーンアップを自動化したい」「ファイル操作マクロのエラー処理を強化したい」——弊社AI鬼管理では、Claude Codeを活用した業務Excel自動化の設計・実装支援を提供しています。

AI鬼管理山崎 AI鬼管理山崎
要件を日本語でお伝えいただくだけで、安全性とエラー処理を考慮したVBAコードをご提案します。まずは無料相談で現状の業務課題をお聞かせください。

NEXT STEP

この記事の内容を、あなたのビジネスで
実践してみませんか?

AI活用を自社で回せるようになりたい方へ

AI鬼管理

Claude Code・Cowork導入支援から業務設計・社内浸透まで実践ベースで伴走。「自社で回せる組織」を90日で作る経営者向けトレーニング。

よくある質問

Q. VBAのKillで削除したファイルをごみ箱から復元できますか?

A. できません。KillステートメントはWindowsのごみ箱を経由せず、直接ファイルを削除します。「誤って削除してしまった」場合は、ファイル復元ソフトウェアを使うか、バックアップから復元する必要があります。重要なファイルを削除する前には必ずバックアップを取ることと、削除前にユーザー確認ダイアログ(vbYesNo)を表示することを推奨します。

Q. Kill *.* でサブフォルダも削除されますか?

A. 削除されません。Kill *.* はそのフォルダの直接の子ファイルのみを削除します。サブフォルダとサブフォルダ内のファイルは対象外です。サブフォルダを含む全削除にはFileSystemObjectのDeleteFolder(Force引数付き)を使います。

Q. Open中のファイルをKillで削除できますか?

A. できません。Open ... As #n でVBAが開いているファイルをKillしようとするとエラー70(Permission denied)が発生します。Kill前にClose #nでファイルを閉じてから削除してください。ExcelのWorkbookが開いているファイルも同様で、Workbook.Close → Killの順序が必要です。

Q. フォルダごと削除するにはどうすればいいですか?

A. RmDirは空フォルダのみ削除できます。ファイルを含むフォルダを削除するには、Kill フォルダ\*.* で全ファイルを削除してからRmDirでフォルダを削除します(サブフォルダがない場合)。サブフォルダを含む場合はFileSystemObjectのDeleteFolder(パス, Force:=True)を使います。

Q. ネットワークドライブのファイルもKillで削除できますか?

A. できます。\\サーバー名\共有フォルダ\ファイル名 のようなUNCパス、またはネットワークドライブのマップされたドライブ文字(Z:\など)を使ってKillが実行できます。ただしネットワーク接続が切れているとエラーになるため、エラー処理は必須です。

Q. Killで削除する前に、削除対象のファイルリストをログに残したい

A. Dir関数のループで削除対象ファイルを先に列挙し、テキストファイルに書き出す(Open ... For Append → Print #n)か、Excelシートに記録してからKillを実行するパターンが有効です。削除実行前にリストをDebug.Printで出力して確認する方法も開発時には有効です。

AIAI鬼管理

AI鬼管理へのお問い合わせ

この記事を読んで気になった方へ。
AI鬼管理の専門スタッフが、御社に最適な
業務自動化プランを無料でご提案します。

会社名を入力してください
業種を選択してください
お名前を入力してください
正しいメールアドレスを入力してください

1つ以上選択してください
1つ以上選択してください
月額コストを選択してください

約1時間のオンライン面談(Google Meet)です

空き枠を取得中...
面談日時を選択してください

予約確定後、Google Calendarの招待メールをお届けします。
しつこい営業は一切ございません。

監修 最終更新日: 2026年7月19日
菅澤孝平
菅澤 孝平 株式会社GENAI 代表取締役
  • AI業務自動化サービス「AI鬼管理」を運営 — Claude Code を活用し、経営者の業務を「AIエージェントに任せる仕組み」へ転換するパーソナルトレーニングを 伴走構築 で提供。日報・採用・問い合わせ対応・経費精算・議事録・データ集計・営業リスト等の定型業務を、AIに代行させる体制を経営者と一緒に作り込む
  • Claude Code 実装ノウハウを 経営者・法人クライアント に直接指導。生成AIを「便利ツール」ではなく 「業務を任せる存在」 として運用する手法を体系化
  • 「やらせ切る管理」メソッドの開発者。シンゲキ株式会社(2021年設立・鬼管理専門塾運営)にて累計3,000名以上の学習者を志望校合格に導いた管理メソッドを、AI × 経営者支援 に転用
  • 著書『3カ月で志望大学に合格できる鬼管理』(幻冬舎)、『親の過干渉こそ、最強の大学受験対策である。』(講談社)
  • メディア出演: REAL VALUE / カンニング竹山のイチバン研究所 / ええじゃないかBiz 他
  • 明治大学政治経済学部卒
現在は AI鬼管理(Claude Code活用の伴走型パーソナルトレーニング)を主事業とし、経営者と二人三脚で「AIに業務を任せる仕組み」を実装。「実行を強制する環境」を AI で構築する手法を、自社の実運用知見をもとに発信している。