【VBA:Tips】ファイルを削除する

ファイルを削除する

VBAでファイルを削除する方法は、FileSystemObjectdeleteFileメソッド使用することで実現できます。

 

FileSystemObjectは、ファイルシステムオブジェクトを操作するための標準ライブラリであり、ファイルやフォルダの作成や削除、コピー、移動などを簡単に行うことができます。

 

deleteFileメソッドは、指定したファイルを削除します。

 

ここでは、FileSystemObjectdeleteFileを使って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

上記のサンプルソースでは、以下の流れで処理しています。

  1. FileSystemObjectを作成する
  2. フォルダパスを指定する
  3. フォルダ内のファイルを取得する
  4. ファイル名が”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

上記のサンプルソースでは、以下の流れで処理しています。

  1. FileSystemObjectを作成する
  2. フォルダパスを指定する
  3. フォルダ内のファイルを取得する
  4. 拡張子が「xlsx」のファイルを削除する

 

注意点は、指定したフォルダが存在しない場合、エラーになります。
また、読み取り専用ファイルを削除しようとすると、エラーになります。

fso.GetExtensionNameメソッドでファイルの拡張子を取得しています。
取得した拡張子を「LCase」ですべて小文字にしています。

例えば、「XLSX」を取得した場合、小文字化して「xlsx」に変換しています。

 

まとめ

VBAでファイルを削除する方法を紹介しました。

指定するファイルやフォルダを間違わないように注意しながら、利用してください。

 

以上です。

 

 

最後まで読んでいただきありがとうございました。
この記事をシェアしていただけると喜びます。

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です