VBAでは、不要になったファイルを自動で削除する処理を簡単に作成できます。 例えば次のような場面でよく利用されます。
- 一時ファイルの削除
- 古いログファイルの整理
- バックアップファイルの削除
- 処理後の不要データ削除
VBAでファイル削除を行う方法は主に次の2つです。
| 方法 | 特徴 |
|---|---|
| Kill | VBA標準。シンプルで高速 |
| 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 の違い
| 項目 | Kill | FileSystemObject |
|---|---|---|
| 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
コメント