Excel VBAでは、不要になったフォルダを自動で削除する処理を作ることができます。 実務では次のような場面でよく使われます。
- 一時フォルダの削除
- バックアップフォルダの整理
- 処理完了後の作業フォルダ削除
VBAでフォルダを削除する方法は主に 2つ あります。
- RmDir を使う方法(VBA標準・空フォルダのみ削除可能)
- FileSystemObject(FSO) を使う方法(中身ごと削除可能)
それぞれの特徴と使い方をわかりやすく解説します。
目次
1. VBAでフォルダを削除する方法は2種類
| 方法 | 特徴 |
|---|---|
| RmDir | VBA標準。空フォルダのみ削除可能 |
| FileSystemObject | 中身があるフォルダも削除可能 |
実務ではこの違いが非常に重要です。
2. RmDirでフォルダを削除する(空フォルダ専用)
RmDir は 空のフォルダだけ を削除できるVBA標準ステートメントです。
基本構文
RmDir フォルダパス
使用例
Sub DeleteFolder()
RmDir "C:\SampleFolder"
End Sub
変数を使う例(実務向け)
Sub DeleteFolder()
Dim folderPath As String
folderPath = "C:\SampleFolder"
RmDir folderPath
End Sub
RmDir 使用時の注意点
① フォルダが空でないと削除できない
コード
C:\SampleFolder
test.txt
この状態で RmDir "C:\SampleFolder" を実行するとエラーになります。 RmDir は 空フォルダ専用 です。
② フォルダが存在しないとエラーになる
RmDir "C:\SampleFolder"
存在しない場合は 実行時エラー ’76’:パスが見つかりません が発生します。
そのため、実務では 削除前に存在確認 を行うのが一般的です。
If Dir(folderPath, vbDirectory) <> "" Then
RmDir folderPath
End If
3. FileSystemObjectでフォルダを削除する(中身ごと削除可能)
FileSystemObject(FSO) を使うと、中身があるフォルダもまとめて削除できます。 実務ではこちらを使うケースが多いです。
基本構文
DeleteFolder フォルダパス
使用例
Sub DeleteFolder()
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
fso.DeleteFolder "C:\SampleFolder"
End Sub
変数を使う例
Sub DeleteFolder()
Dim fso As Object
Dim folderPath As String
folderPath = "C:\SampleFolder"
Set fso = CreateObject("Scripting.FileSystemObject")
fso.DeleteFolder folderPath
End Sub
サブフォルダごと削除する方法
DeleteFolder の第2引数に True を指定すると、 読み取り専用ファイルがあっても削除できます。
Sub DeleteFolder()
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
fso.DeleteFolder "C:\SampleFolder", True
End Sub
4. RmDir と FileSystemObject の違い
| 項目 | RmDir | FileSystemObject |
|---|---|---|
| VBA標準 | ○ | ○ |
| 記述量 | 少ない | やや多い |
| 空フォルダ削除 | ○ | ○ |
| 中身ありフォルダ削除 | × | ○ |
| 実務利用 | 簡単な処理 | 高機能・実務向け |
5. 実務でよくある削除処理例
一時フォルダの削除
Sub DeleteTempFolder()
Dim folderPath As String
folderPath = "C:\TempFolder"
RmDir folderPath
End Sub
処理終了後に一時フォルダを削除するケースでよく使われます。
6. まとめ
VBAでフォルダを削除する方法は次の2つです。
| 方法 | 用途 |
|---|---|
| RmDir | 空フォルダの削除 |
| FileSystemObject | 中身ごと削除 |
使い分けは次の通りです。
- 簡単な削除 → RmDir
- フォルダごと削除 → FileSystemObject
コメント