VBA ではフォルダを削除する場合には、まずはフォルダ内にあるファイルやサブフォルダから削除する必要があります。ここでは、サブフォルダ等も含めてフォルダを削除するサンプルを掲載しています。
スポンサーリンク
ポイント
読み取り専用ファイルがある場合には、まずはその属性を解除する必要があります。詳細はコメントを参照ください。
フォルダ削除サンプルスクリプト
' --------------------------------------------------------------- ' フォルダを削除する ' サブフォルダやファイル(隠しファイル、読み取り専用ファイル)も削除 ' --------------------------------------------------------------- Private Sub myDeleteFolder(ByVal dirPath) Dim fso As Object Set fso = CreateObject("Scripting.FileSystemObject") ' フォルダが存在しない場合は何もしない If fso.FolderExists(dirPath) = False Then Exit Sub End If ' フォルダ内のファイルの一覧を取得し削除する For Each f In fso.GetFolder(dirPath).Files ' 読み取り専用ファイルであれば、その属性を解除 If (fso.GetFile(f).Attributes And 1) Then fso.GetFile(f).Attributes = 0 End If ' ファイルを削除する fso.DeleteFile (f) Next ' サブフォルダの一覧を取得する For Each sd In fso.GetFolder(dirPath).SubFolders ' サブフォルダ内のファイルの削除(再帰呼び出し) Call myDeleteFolder(sd) Next ' 自フォルダーを削除する fso.deleteFolder (dirPath) Set fso = Nothing End Sub ' 呼出し例 Dim dir As String dir = "E:\aaa" myDeleteFolder (dir)
サブフォルダや読み取り専用ファイルや隠しファイルを含めたファイルを削除してから対象のフォルダを削除しています。コメントにもあるように読み取り専用ファイルの属性の削除を行わずに、読み取り専用ファイルを削除しようとすると、エラーダイアログが出力されます。

読み取り専用ファイルの削除でエラー
ファイルの属性一覧
ファイルの属性を下表にまとめましたので、ご確認ください。
値 | 内容 |
---|---|
0 | 標準ファイル |
1 | 読み取り専用ファイル |
2 | 隠しファイル |
4 | システムファイル |
8 | ディスクドライブボリュームラベル(取得のみ可能) |
16 | フォルダまたはディレクトリ(取得のみ可能) |
32 | アーカイブファイル |
64 | リンクまたはショートカット(取得のみ可能) |
128 | 圧縮ファイル(取得のみ可能) |
参考