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

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

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

PR

VBAコード

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

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

「FileSystemObject」の「deleteFolder」メソッドにより、フォルダを削除します。

フォルダをまるっと削除するために、「RmDirステートメント」ではなく「FileSystemObject」の「deleteFolder」メソッドを使用します。

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

PR

参考

上記のVBAコードで使用した以下の詳細については、公式サイトをご確認ください。

●「FileSystemObject」の「deleteFolder」メソッド

PR

備考(RmDirステートメントを使用したフォルダ削除について)

中身が空のフォルダならば、「RmDirステートメント」でも削除できます。

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

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

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



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


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