FileSystemObjectのDeleteFolderメソッド
FileSystemObjectのDeleteFolderメソッドは、指定されたフォルダパスの最下層フォルダを削除します。
フォルダの中にファイルやフォルダが存在していても存在していなくても、フォルダは削除されます。
FileSystemObjectの他のメソッドやプロパティは「FileSystemObjectとTextStreamのメソッド・プロパティ一覧」をご参照ください。
構文
Sub DeleteFolder(FolderSpec As String, [Force As Boolean = False])
FolderSpec | 削除するフォルダパスを指定します。
最下層フォルダ部分にワイルドカードの*を指定できます。最下層でないフォルダにはワイルドカードを指定できません。 |
Force | 削除対象フォルダ内にある読み取り専用のファイルを削除するかどうかを指定します。
削除する場合はTrue、削除しない場合はFalseを指定します。省略時はFalseとして扱われます。 |
エラー対応
DeleteFolderメソッドの引数に指定したフォルダパスが存在しない場合は「エラー76:パスが見つかりません。」が発生します。
また、第二引数をFalseまたは省略時に読み取り専用ファイルがある場合は「エラー70:書き込みできません」が発生します。
これらのエラーが発生するとメッセージボックスが表示され、処理はそこで止まってしまいます。
処理を止めないようにするためにはエラー処理を適切に行う必要があります。
具体的には「On Error Goto XXX」でエラー発生時にエラーラベルまで処理を飛ばしたり、「On Error Resume Next」でエラーが発生しても処理を継続するようにしておいたほうがよいでしょう。
いずれの場合も、事前にフォルダが存在しているかどうかのチェックを行っておけばDeleteFolderメソッドを実行する前にエラーを回避できます。フォルダ存在チェック方法についての詳細は「VBAでフォルダ存在チェック」をご参照ください。
事前設定
以下のサンプルコードでは参照設定でFileSystemObjectクラスを利用できるようにしています。
FileSystemObjectクラスを利用するには、事前にVBA画面→ツールメニュー→参照設定、を選択し、参照設定ダイアログで「Microsoft Scripting Runtime」にチェックを付けます。
詳細は「VBAでのFileSystemObjectとTextStreamの使い方」の事前設定をご参照ください。
サンプルコード
指定したフォルダパスを削除するサンプルです。読み取り専用ファイルは削除しないように第二引数にFalseを指定しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Sub FileSystemObjectDeleteFolder() On Error GoTo ERR_LABEL Dim fso As New FileSystemObject '// FileSystemObjectクラス Dim sFolderPath '// 削除フォルダパス '// 削除フォルダパスを設定 sFolderPath = "C:\aaa\bbb" '// フォルダ削除 Call fso.DeleteFolder(sFolderPath, False) ERR_LABEL: '// エラー発生時 If Err.Number <> 0 Then '// エラー内容を出力 Debug.Print Err.Number & " " & Err.Description End If End Sub |
フォルダパス不正時などでのエラー対応としてOn Error GoToやエラー情報の出力を行うようにしています。
FileSystemObjectやTextStreamのオブジェクト変数に対して、「Set fso = Nothing」のようなコードがありませんが、なくても問題ありません。詳細については「VBAでのFileSystemObjectとTextStreamの使い方」をご参照ください。