VBAでファイルを削除する方法は、FileSystemObjectのdeleteFileメソッド使用することで実現できます。
FileSystemObjectは、ファイルシステムオブジェクトを操作するための標準ライブラリであり、ファイルやフォルダの作成や削除、コピー、移動などを簡単に行うことができます。
deleteFileメソッドは、指定したファイルを削除します。
ここでは、FileSystemObjectのdeleteFileを使ってVBAでファイルを削除する方法について説明します。
もくじ
【サンプルソース】指定したファイルを削除する
以下は、FileSystemObjectのdeleteFileを使用してVBAでファイルを削除するサンプルソースです。
Sub deleteFile()
Dim fso As Object
Dim filePath As String
' ファイルのパスを指定
filePath = "D:\200_work\100_sample\AAA\A001.txt"
' FileSystemObjectを生成
Set fso = CreateObject("Scripting.FileSystemObject")
' ファイルを削除
Call fso.deleteFile(filePath, True)
' メモリ解放
Set fso = Nothing
MsgBox "ファイルを削除しました。"
End Sub
上記のサンプルソースでは、削除したいファイルパスを指定しています。
次に、FileSystemObjectを生成しています。
deleteFileメソッドを利用して、指定したファイルを削除しています。
第1引数はファイルパス、第2引数は読み取り専用ファイルを削除するかどうかを指定します。
サンプルソースでは、読み取り専用ファイルも削除したいので、Trueを指定しています。
Falseを指定した場合、読み取り専用ファイル削除時にエラーが発生します。
ファイル削除時に指定したファイルが存在しない場合、エラーが発生します。
注意点としては、削除したいファイルが存在するか、読み取り専用ファイルか注意して実行してください。
【サンプルソース】指定した条件に該当するファイルを削除する(ファイル名)
以下は、FileSystemObjectを使用して、指定したフォルダに存在するAから始まるファイルを全て削除するサンプルソースです。
Sub deleteFilesStartingWithA()
Dim fso As Object
Dim folderPath As String
Dim files As Object
Dim file As Object
' FileSystemObjectを作成
Set fso = CreateObject("Scripting.FileSystemObject")
' フォルダのパスを設定
folderPath = "D:\200_work\100_sample\AAA"
' フォルダ内のファイルを取得
Set files = fso.GetFolder(folderPath).files
' ファイル名が"A"で始まる場合は削除
For Each file In files
If Left(file.Name, 1) = "A" Then
fso.deleteFile file.Path
End If
Next file
' FileSystemObjectを解放
Set fso = Nothing
MsgBox "削除が完了しました。"
End Sub
上記のサンプルソースでは、以下の流れで処理しています。
- FileSystemObjectを作成する
- フォルダパスを指定する
- フォルダ内のファイルを取得する
- ファイル名が”A”から始まる場合、削除する
注意点は、指定したフォルダが存在しない場合、エラーになります。
また、読み取り専用ファイルを削除しようとすると、エラーになります。
【サンプルソース】指定した条件に該当するファイルを削除する(拡張子)
以下は、FileSystemObjectを使用して、指定したフォルダに存在する拡張子が「xlsx」のファイルを全て削除するサンプルソースです。
Sub deleteXlsxFiles()
Dim fso As Object
Dim folderPath As String
Dim files As Object
Dim file As Object
' FileSystemObjectを作成
Set fso = CreateObject("Scripting.FileSystemObject")
' フォルダのパスを設定
folderPath = "D:\200_work\100_sample\AAA"
' フォルダ内のファイルを取得
Set files = fso.GetFolder(folderPath).files
' 拡張子が「xlsx」のファイルを削除
For Each file In files
If LCase(fso.GetExtensionName(file.Path)) = "xlsx" Then
fso.deleteFile file.Path
End If
Next file
' FileSystemObjectを解放
Set fso = Nothing
MsgBox "削除が完了しました。"
End Sub
上記のサンプルソースでは、以下の流れで処理しています。
- FileSystemObjectを作成する
- フォルダパスを指定する
- フォルダ内のファイルを取得する
- 拡張子が「xlsx」のファイルを削除する
注意点は、指定したフォルダが存在しない場合、エラーになります。
また、読み取り専用ファイルを削除しようとすると、エラーになります。
fso.GetExtensionNameメソッドでファイルの拡張子を取得しています。
取得した拡張子を「LCase」ですべて小文字にしています。
例えば、「XLSX」を取得した場合、小文字化して「xlsx」に変換しています。
まとめ
VBAでファイルを削除する方法を紹介しました。
指定するファイルやフォルダを間違わないように注意しながら、利用してください。
以上です。
最後まで読んでいただきありがとうございました。
この記事をシェアしていただけると喜びます。

