Excel VBAは、マイクロソフトが提供するVisual Basic for Applicationsの機能を使用して、Excelの操作を自動化することができます。
その中でも、DeleteFileメソッドは、指定したパスのファイルを削除するための非常に便利な機能です。
本記事では、Excel VBAのDeleteFileメソッドの使い方を詳しく解説します。
DeleteFileメソッドとは
DeleteFileメソッドは、FileSystemObjectオブジェクトを使用してファイルを削除するためのメソッドです。
FileSystemObjectオブジェクトは、ファイルやフォルダなどのファイルシステムオブジェクトを扱うためのオブジェクトであり、DeleteFileメソッドは、このオブジェクトが提供するファイルを削除するための機能です。
DeleteFileメソッドの書式
DeleteFileメソッドの書式は以下の通りです。
1 |
FileSystemObject.DeleteFile(FileSpec[, Force]) |
ここで、引数の説明は以下の通りです。
- FileSpec: 削除するファイルのパスを指定します。必ず指定する必要があります。
- Force: 削除するファイルが読み取り専用の場合でも削除するかどうかを指定します。省略可能です。
DeleteFileメソッドの使用例
DeleteFileメソッドの使用例を示します。以下のコードは、”C:\test.txt”というパスにあるファイルを削除する例です。
1 2 3 4 5 6 |
Sub DeleteFileExample() Dim fso As FileSystemObject Set fso = New FileSystemObject fso.DeleteFile "C:\test.txt" End Sub |
このコードを実行すると、指定されたパスにあるファイルが削除されます。もし、削除するファイルが読み取り専用の場合でも削除したい場合は、ForceパラメータをTrueに設定します。
1 2 3 4 5 6 |
Sub DeleteReadOnlyFileExample() Dim fso As FileSystemObject Set fso = New FileSystemObject fso.DeleteFile "C:\test.txt", True End Sub |
注意点
DeleteFileメソッドを使用する際には、以下の注意点に気を付ける必要があります。
- ファイルを削除する前に、削除するファイルが存在するかどうかを確認してください。
- ファイルを削除する前に、削除するファイルが使用中でないことを確認してください。
- ファイルを削除する前に、削除するファイルがアクセス制限などによって削除できない可能性があるため、エラー処理を行うことをおすすめします。
まとめ
Excel VBAのDeleteFileメソッドは、ファイルを削除するための非常に便利な機能です。FileSystemObjectオブジェクトを使用してファイルを削除することができ、パスを指定するだけで簡単にファイルを削除することができます。
ただし、ファイルが存在するか、使用中でないかなどの確認を行った上で、エラー処理を行うことをおすすめします。
サンプルコード
指定した拡張子を持つファイルを削除する
以下のコードは、指定したフォルダ内にある、指定した拡張子を持つファイルをすべて削除する例です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Sub DeleteFilesWithExtension() Dim fso As FileSystemObject Set fso = New FileSystemObject Dim folderPath As String folderPath = "C:\MyFolder\" Dim targetExtension As String targetExtension = ".txt" Dim targetFiles As Files Set targetFiles = fso.GetFolder(folderPath).Files Dim file As File For Each file In targetFiles If Right(file.Name, Len(targetExtension)) = targetExtension Then fso.DeleteFile file.Path End If Next file End Sub |
このVBAコードは、指定されたフォルダ内のすべてのファイルのうち、指定された拡張子を持つファイルを削除するためのものです。
具体的には、FileSystemObjectオブジェクトを使用して、フォルダ内のすべてのファイルを取得し、ファイルの拡張子を確認して、指定された拡張子を持つファイルだけを削除しています。
たとえば、上記のコードでは、C:\MyFolder\ フォルダ内にある、拡張子が .txt のファイルを削除しています。このような操作は、例えば、あるフォルダ内にある古いログファイルを一括で削除する場合などに有効です。
特定の日付よりも古いファイルを削除する
以下のコードは、指定したフォルダ内にある、特定の日付よりも古いファイルをすべて削除する例です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Sub DeleteOldFiles() Dim fso As FileSystemObject Set fso = New FileSystemObject Dim folderPath As String folderPath = "C:\MyFolder\" Dim targetDate As Date targetDate = Date - 30 '30日前の日付を設定 Dim targetFiles As Files Set targetFiles = fso.GetFolder(folderPath).Files Dim file As File For Each file In targetFiles If file.DateLastModified < targetDate Then fso.DeleteFile file.Path End If Next file End Sub |
このVBAコードは、指定したフォルダ内にある、特定の日付よりも古いファイルをすべて削除することができます。以下が、具体的な機能についての説明です。
FileSystemObject
オブジェクトを使用して、指定したフォルダ内のファイルを操作できます。Date - 30
を使用して、現在の日付から30日前の日付を設定できます。file.DateLastModified
を使用して、ファイルの最終更新日を取得できます。fso.DeleteFile
を使用して、ファイルを削除できます。
このVBAコードを使用することで、30日以上経過したファイルを一括で削除することができ、ファイル整理の効率化が図れます。
コメント