
FileSystemObjectのDeleteFolderメソッドについてです。
Menu
DeleteFolderメソッド
概要
フォルダーを削除します。
構文
FileSystemObject.DeleteFolder folderspec,[force]
[ ]は省略可という意味
DeleteFolderメソッドの引数
引 数 | 必須 / 省略可 | 詳 細 |
削除するファイル | 必須 | ・削除するフォルダーパスを指定。 (削除するフォルダーがない場合はエラー) ・ワイルドカードで複数削除可。 |
読み取り専用 (force) | 省略可 | ・読み取り専用属性が設定されたフォルダーを削除するかbool値で指定。 True:削除する False:削除しない(既定値) ※読み取り専用フォルダーを削除する場合、True指定しないとエラー。 |
VBAサンプル
1つのフォルダーを削除
test1という名前のフォルダーを削除する場合
1 2 3 4 5 6 7 8 | Sub フォルダーを削除() Dim fso As Object Set fso = CreateObject("Scripting.FileSystemObject") 'test1という名前のフォルダーを削除 fso.DeleteFolder "D:\sample\test1" End Sub |
複数のフォルダーを削除
ワイルドカードでtestという名前が含まれているフォルダーを複数削除する場合
1 2 3 4 5 6 7 8 | Sub 複数のフォルダーを削除() Dim fso As Object Set fso = CreateObject("Scripting.FileSystemObject") 'ワイルドカードでtestという名前が含まれているフォルダーを複数削除 fso.DeleteFolder "D:\sample\*test*" End Sub |
読み取り専用フォルダーの削除
テストという名前のフォルダーに読み取り専用のファイルがある場合
第2引数 → Trueにします。
1 2 3 4 5 6 7 8 | Sub 読み取り専用フォルダーを削除() Dim fso As Object Set fso = CreateObject("Scripting.FileSystemObject") 'テストという名前のフォルダーに読み取り専用のファイルがある場合はTrueを指定 fso.DeleteFolder "D:\sample\test", True End Sub |
※もし第2引数を省略(False)は下記のようなエラー表示(書き込みできません)がでます。フォルダー内にあるファイルのうち、読み取り専用ではないファイルが先に実行された場合それらだけ削除されてからエラーが出ます。そして残りのファイルとフォルダーは残ったまま削除されません。
ファイル → フォルダーの順序で削除されます。ロールバック機能はないので注意しましょう。