Excel VBA FileSystemObjectでファイルを削除

ファイル/フォルダ操作

今回は「FileSystemObject」オブジェクトを使用してファイルを削除する方法をご説明します。

「FileSystemObject」オブジェクトとは、ドライブ、フォルダ、ファイルを操作する事ができるオブジェクトです。

「FileSystemObject」オブジェクトの使い方も併せてご説明します。

他のファイル/フォルダの操作は次の記事をご覧ください。

1.FileSystemObjectの使い方

FileSystemObject」オブジェクトは、ドライブ、フォルダ、ファイルなどを操作する事ができるオブジェクトです。

FileSystemObjectを使用するには「CreateObject」メソッドを使用して次のように記載します。

Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
FileSystemObjectのメソッド一覧
メソッド操作内容
BuildPathパスの末尾に、指定したフォルダ名を追加したパスを返します
CopyFileファイルをコピーします
CopyFolderフォルダをコピーします
CreateFolder新しいフォルダを作成します
CreateTextFile新しいテキストファイルを作成します
DeleteFileファイルを削除します
DeleteFolderフォルダを削除します
DriveExistsドライブが存在するかどうか調べます
FileExistsファイルが存在するかどうか調べます
FolderExistsフォルダが存在するかどうか調べます
GetAbsolutePathName省略したパスから完全なパス名を返します
GetBaseName拡張子を除いたファイルのベース名を返します
GetDrive指定したDriveオブジェクトを返します
GetDriveName指定したドライブの名前を返します
GetExtensionNameファイルの拡張子を返します
GetFile指定したFileオブジェクトを返します
GetFileName指定したファイルの名前を返します
GetFolder指定したFolderオブジェクトを返します
GetParentFolderName指定したフォルダの親フォルダを返します
GetSpecialFolderシステムが使用する特別なフォルダのパスを返します
GetTempName一時的なファイル名を生成します
MoveFileファイルを移動します
MoveFolderフォルダを移動します
OpenTextFile指定したTextStreamオブジェクトを返します

2.ファイルの削除

書式は「FileSystemObject.DeleteFile filespec[, force] 」と書きます。

filespec

削除するファイル名を指定します。

最後のパスの要素にのみ、ワイルドカードを使用する事ができます。

filespecは省略する事ができません。

指定したファイルが存在しない場合、エラーが発生します。

force

forceは読み取り専用ファイルの削除をTrue/Falseで指定します。

Trueを指定すると読み取り専用ファイルも削除可能です。

省略するとFalseを指定したことになり、読み取り専用ファイルは削除できません。

3.削除するファイルの存在を確認する

「filespec」で指定したファイルが存在しない場合、エラーとなります。

エラーを回避するためには「FileSystemObject.FileExists」でファイルの存在を確認します。

FileExistsはファイルが存在しない場合Falseを返します。

また、「On Error GoTo」でエラー発生時に、スキップしてエラーを回避する事も可能です。

3.サンプルコード

指定したファイルを削除する

削除するファイル名まで指定します。

FileSystemObject.FileExistsで存在を確認して削除する
Sub Sample1()

Dim FSO         As Object
Dim FileName    As String

Set FSO = CreateObject("Scripting.FileSystemObject")
FileName = "C:\Sample\Book100.xlsx"


If FSO.FileExists(FileName) Then

    FSO.DeleteFile filespec:=FileName, force:=True

End If   

End Sub
On Error GoToでエラーを回避して削除する

On Error GoTo ErrLabel」でエラー発生時に、「ErrLabel:」にスキップしてエラーを回避します。

Sub Sample2()

Dim FSO         As Object
Dim FileName    As String

Set FSO = CreateObject("Scripting.FileSystemObject")
FileName = "C:\Sample\Book1.xlsx"

On Error GoTo ErrLabel

    FSO.DeleteFile filespec:=FileName, force:=True
    
    Exit Sub
    
ErrLabel:    

End Sub

複数のファイルを削除する

「C:\Sample\」フォルダ内のファイル名に「Book」という文字を含むファイルを削除します。

この時エラー処理は「On Error GoTo」を使用します。

FileSystemObject.FileExists」は「*」を含んでいるとFalseと判定してしまうためです。

Sub Sample3()

Dim FSO         As Object
Dim FileName    As String

Set FSO = CreateObject("Scripting.FileSystemObject")
FileName = "C:\Sample\Book*.xlsx"


On Error GoTo ErrLabel

    FSO.DeleteFile filespec:=FileName, force:=True
    
    Exit Sub
    
ErrLabel:

End Sub
タイトルとURLをコピーしました