【VBA】フォルダをまるっと削除する

この記事では
フォルダの中にサブフォルダやファイルがあったとしても、
フォルダをまるっと削除する方法を記載します!

削除したいフォルダの存在確認を行い、
存在する場合のみ削除します!
※存在しないフォルダの削除を試みると、エラーとなるため。

VBAコード

ここでは例として、デスクトップ配下のフォルダ「folder_001」を削除します。
「FileSystemObject」の「deleteFolder」を用いて削除します。

フォルダをまるっと削除するために、「RmDir」ではなく「FileSystemObject」の「deleteFolder」を使用します。

Option Explicit

Sub sample()
    
    Dim fso As Object
    Dim folderFullPath As String
    
    '削除するフォルダのパスを指定
    folderFullPath = "C:\Users\user\Desktop\folder_001"
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    'フォルダの存在確認
    If fso.FolderExists(folderFullPath) Then
        '削除
        fso.DeleteFolder (folderFullPath)
    End If
    
    '後片付け
    Set fso = Nothing
    
End Sub

上記で削除すると、ゴミ箱に残らず完全に削除されます。
ゴミ箱に残るように削除したい場合は、Windows APIを用いて削除します。
※詳細なやり方は割愛します。それなりに面倒であるためオススメしません。

備考(RmDirを使用したフォルダ削除について)

中身が空のフォルダならば、RmDirでも削除できます。
ですが中身が空でない場合(サブフォルダやファイルが存在する場合)、RmDirで削除を試みるとエラーとなり削除できません。

フォルダの中身を削除する手間を省くためにも、FileSystemObjectを使用するほうが良いです。

なおRmDirで削除した場合も、ゴミ箱に残らず完全に削除されます。



読み取り専用ファイルが格納されているフォルダを
まるっと削除する方法は、以下の記事を参照して下さい!


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