【VBA】フォルダを削除する方法|RmDirとFileSystemObjectの違い・中身ごと削除も解説

Excel VBAでは、不要になったフォルダを自動で削除する処理を作ることができます。 実務では次のような場面でよく使われます。

  • 一時フォルダの削除
  • バックアップフォルダの整理
  • 処理完了後の作業フォルダ削除

VBAでフォルダを削除する方法は主に 2つ あります。

  • RmDir を使う方法(VBA標準・空フォルダのみ削除可能)
  • FileSystemObject(FSO) を使う方法(中身ごと削除可能)

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

スポンサーリンク

1. VBAでフォルダを削除する方法は2種類

方法特徴
RmDirVBA標準。空フォルダのみ削除可能
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 の違い

項目RmDirFileSystemObject
VBA標準
記述量少ないやや多い
空フォルダ削除
中身ありフォルダ削除×
実務利用簡単な処理高機能・実務向け
スポンサーリンク

5. 実務でよくある削除処理例

一時フォルダの削除

Sub DeleteTempFolder()
    Dim folderPath As String
    folderPath = "C:\TempFolder"
    RmDir folderPath
End Sub

処理終了後に一時フォルダを削除するケースでよく使われます。

スポンサーリンク

6. まとめ

VBAでフォルダを削除する方法は次の2つです。

方法用途
RmDir空フォルダの削除
FileSystemObject中身ごと削除

使い分けは次の通りです。

  • 簡単な削除 → RmDir
  • フォルダごと削除 → FileSystemObject

コメント

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