【VBA】ファイル削除の方法|KillとFileSystemObjectの使い方を解説

VBAでは、不要になったファイルを自動で削除する処理を簡単に作成できます。 例えば次のような場面でよく利用されます。

  • 一時ファイルの削除
  • 古いログファイルの整理
  • バックアップファイルの削除
  • 処理後の不要データ削除

VBAでファイル削除を行う方法は主に次の2つです。

方法特徴
KillVBA標準。シンプルで高速
FileSystemObject (FSO)読み取り専用対応など柔軟な制御が可能

それぞれの使い方をわかりやすく解説します。

スポンサーリンク

1. Killでファイルを削除する(最もシンプル)

最も簡単にファイルを削除できるのが Kill ステートメントです。

基本構文

Kill ファイルパス

使用例

Sub DeleteFile()
    Kill "C:\Sample\test.txt"
End Sub

実行すると C:\Sample\test.txt が削除されます。

変数を使う実務向け例

Sub DeleteFile()
    Dim filePath As String
    
    filePath = "C:\Sample\test.txt"
    
    Kill filePath
End Sub
スポンサーリンク

2. Kill の特徴と注意点

① ワイルドカードが使える(複数削除可能)

Kill "C:\Sample\*.txt"

→ Sampleフォルダ内の .txt をすべて削除 (FileCopy にはない強み)

② ファイルが存在しないとエラーになる

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

③ 読み取り専用ファイルは削除できない

→ 読み取り専用属性があるとエラー

スポンサーリンク

3. FileSystemObjectでファイル削除(高機能)

FileSystemObject(FSO) を使うと、読み取り専用ファイルも削除できるなど、より柔軟な処理が可能です。

基本構文

DeleteFile ファイルパス, 強制削除

使用例

Sub DeleteFile()
    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    fso.DeleteFile "C:\Sample\test.txt", True
End Sub

引数の意味

引数内容
第1引数削除対象ファイル
第2引数強制削除(True / False)

強制削除とは?

fso.DeleteFile "C:\Sample\test.txt", True

True を指定すると 読み取り専用ファイルでも削除可能 になります。

FileSystemObject のメリット

  • 読み取り専用ファイルも削除できる
  • ワイルドカード使用可能
  • フォルダ削除などと統一管理できる

ワイルドカードで複数削除

fso.DeleteFile "C:\Sample\*.txt", True
スポンサーリンク

4. Kill と FileSystemObject の違い

項目KillFileSystemObject
VBA標準
記述量少ないやや多い
ワイルドカード
読み取り専用削除×
実務利用シンプル処理高機能処理
スポンサーリンク

5. 実務でよく使う削除処理

一時ファイル削

Sub DeleteTempFiles()
    Kill "C:\Temp\*.tmp"
End Sub

日付で古いファイルを削除(応用例)

Sub DeleteOldFiles()
    Dim fileName As String
    Dim folderPath As String
    
    folderPath = "C:\Log\"
    
    fileName = Dir(folderPath & "*.*")
    
    Do While fileName <> ""
        If FileDateTime(folderPath & fileName) < Date - 7 Then
            Kill folderPath & fileName
        End If
        
        fileName = Dir()
    Loop
End Sub

7日以上前のファイルを削除する処理

安全に削除する実務向け例(存在確認付き)

Sub SafeDeleteFile()
    Dim filePath As String
    
    filePath = "C:\Sample\test.txt"
    
    '存在確認
    If Dir(filePath) = "" Then
        MsgBox "ファイルが存在しません"
        Exit Sub
    End If
    
    '削除
    Kill filePath
End Sub
スポンサーリンク

6. まとめ

VBAでファイル削除する方法は次の2つです。

方法用途
Killシンプルな削除
FileSystemObject読み取り専用対応など制御付き削除

使い分けは以下の通り。

  • 単純削除 → Kill
  • 制御・安全性重視 → FileSystemObject

コメント

タイトルとURLをコピーしました