フォルダの削除

フォルダを削除する。

FileSystemObjectのDeleteFolderメソッドを利用してフォルダを削除させることができます。

DeleteFolderには下記の引数が設定できます。

引数名説明                省略
第1引数folderspec削除するフォルダパスの指定不可
第2引数force読み取り専用属性の削除判定
True:削除する、False:削除しない(規定値)

削除時にワイルドカードを使用して複数のフォルダをまとめて削除させることもできます。
削除したいフォルダ内に読み取り専用のファイルがあり削除できない場合は、第2引数(force)に True を設定することで削除ができるようになります。

 ●フォルダの削除

'******************************************************************
' フォルダの削除
'******************************************************************
Sub Main_DeleteFolder()
    
    '削除先の指定
    Dim sFolder As String
    sFolder = "C:\VBA\FSO_DEL"
    
    'FileSystemObjectの作成
    Dim oFso As Object
    Set oFso = CreateObject("Scripting.FileSystemObject")
    
    'フォルダの削除
    Call oFso.DeleteFolder(sFolder)

End Sub

 ●複数のフォルダをまとめて削除

'******************************************************************
' フォルダの削除
'******************************************************************
Sub Main_DeleteFolderWildcard()

    '削除先の指定(ワイルドカード使用)
    Dim sFolder As String
    sFolder = "C:\VBA\FSO_DEL\新しいフォルダ*"
    
    'FileSystemObjectの作成
    Dim oFso As Object
    Set oFso = CreateObject("Scripting.FileSystemObject")
    
    'フォルダの削除
    Call oFso.DeleteFolder(sFolder)

End Sub

 ●読み取り専用のファイルがある場合

'******************************************************************
' フォルダの削除(読み取り専用ファイルがフォルダにある場合の削除)
'******************************************************************
Sub Main_DeleteFolderForce()
    
    
    '削除先の指定
    Dim sFolder As String
    sFolder = "C:\VBA\FSO_DEL\Readonly"

    'FileSystemObjectの作成
    Dim oFso As Object
    Set oFso = CreateObject("Scripting.FileSystemObject")
    
    'フォルダの削除(第2引数にTrueを指定)
    Call oFso.DeleteFolder(sFolder, True)

End Sub