FileSystemObjectのDeleteFileメソッド
FileSystemObjectのDeleteFileメソッドは、引数で指定したファイルを削除します。
ゴミ箱には移動せずに削除するため、削除後に復旧はできません。
FileSystemObjectの他のメソッドやプロパティは「FileSystemObjectとTextStreamのメソッド・プロパティ一覧」をご参照ください。
構文
Sub DeleteFile(FileSpec As String, [Force As Boolean = False])
FileSpec | 削除するファイルパスを指定します。ファイル名だけを指定した場合はカレントディレクトリのファイルが対象になります。ファイル名には*(任意の1文字以上)や?(任意の1文字)でのワイルドカード指定が可能です。 |
Force | 読み取り専用属性のファイルを削除するかどうかを指定します。Trueは読み取り専用のファイルも削除しますが、Falseは削除しません。省略時はFalse扱いになります。 |
ファイル削除時の注意点
DeleteFileメソッドの引数のFileSpecにはファイル名だけを指定した場合、カレントディレクトリにあるファイルが削除対象になります。
ただ、カレントディレクトリがどこかわかっているのであればいいのですが、どこなのか分からない状況の方が普通で、そういう状況でファイル名だけを指定してDeleteFileメソッドを実行すると削除すべきでないファイルが削除される恐れがあります。
さらにファイル名のみ+ワイルドカードを指定した場合は、状況によってはアプリやPC自体の環境が破壊されることもありえます。
このようなことにならないために、ファイル名だけの指定はせず、フォルダパスの指定は必ず行うようにしたほうがよいでしょう。
エラー対応
DeleteFileメソッドでは、対象のファイルパスが存在しない場合は実行時エラー53「ファイルが見つかりません。」が発生します。
このようなエラーが発生すると通常はメッセージボックスが表示され、処理はそこで止まってしまいます。
処理を止めないようにするためにはエラー処理を適切に行う必要があります。
具体的には「On Error Goto XXX」でエラー発生時にエラーラベルまで処理を飛ばしたり、「On Error Resume Next」でエラーが発生しても処理を継続するようにしておいたほうがよいでしょう。
事前設定
以下のサンプルコードでは参照設定でFileSystemObjectクラスを利用できるようにしています。
FileSystemObjectクラスを利用するには、事前にVBA画面→ツールメニュー→参照設定、を選択し、参照設定ダイアログで「Microsoft Scripting Runtime」にチェックを付けます。
詳細は「VBAでのFileSystemObjectとTextStreamの使い方」の事前設定をご参照ください。
サンプルコード
ファイルを削除するサンプルです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Sub FileSystemObjectDeleteFile() '// エラー発生時も処理を継続 On Error Resume Next Dim fso As New FileSystemObject '// FileSystemObjectクラス Dim sFilePath '// ファイルパス '// ファイルパスを指定 sFilePath = "C:\test\?.txt" '// ファイルを削除 Call fso.DeleteFile(FileSpec:=sFilePath) '// エラー発生時 If Err.Number <> 0 Then '// エラー内容を出力 Debug.Print Err.Number & " " & Err.Description End If End Sub |
指定したファイルパスのテキストファイルを削除するコードです。ファイル名にはワイルドカードの?を利用して、1.txtやa.txtなどの「任意の1文字+.txt」を削除するようにしています。
DeleteFileメソッドはファイルが削除できない場合にエラーが発生するため、エラー処理「On Error Resume Next」でエラーが発生しても処理を継続するようにしています。
エラーが発生した場合はその内容をイミディエイトウィンドウに出力します。
FileSystemObjectクラスのオブジェクト変数に対して、「Set fso = Nothing」のようなコードがありませんが、なくても問題ありません。詳細については「VBAでのFileSystemObjectとTextStreamの使い方」をご参照ください。