更新日:、 作成日:
VBA フォルダの削除
はじめに
Excel VBA マクロでフォルダを削除する方法を紹介します。
DeleteFolder 関数を使って指定したフォルダを削除できます。
ワイルドカードを使って複数のフォルダや全てのフォルダを削除できます。
FileSystemObject について
ここでは VBA の標準の関数より便利な FileSystemObject を使った方法を紹介しています。基本的な使い方については「FileSystemObject ファイル操作の基礎」をご覧ください。
コードを見やすくするため FileSystemObject を参照設定しています。また、エラー処理は行っていません。
フォルダの削除
指定したフォルダの削除
Dim fso As FileSystemObject
Set fso = New FileSystemObject ' インスタンス化
Call fso.DeleteFolder("D:\TipsFolder", True) ' 指定したパスのフォルダを削除
' 後始末
Set fso = Nothing
fso.DeleteFolder 関数で指定したパスのフォルダを削除します。
第 1 引数に削除するフォルダのパスを指定します。フォルダが存在しないときはエラーが発生します。パスにはワイルドカードを指定できますが、詳しくは下記の「複数のフォルダを削除」をご覧ください。
第 2 引数に True を指定すると読み取り専用のフォルダを削除できます。False または省略すると読み取り専用のフォルダは削除しません。そのときはエラーが発生します。フォルダに読み取り専用が設定されていなくても、フォルダ内にあるフォルダやファイルに設定されているときは、それを削除しようとしたときにエラーが発生し、そこで処理が中断されます。それ以降のフォルダやファイルは削除されません。
サブフォルダを削除
Dim fso As FileSystemObject
Set fso = New FileSystemObject
Dim pfl As Folder
Set pfl = fso.GetFolder("D:\TipsFolder") ' 親フォルダを取得
Dim fl As Folder
For Each fl In pfl.SubFolders ' サブフォルダの一覧を取得
If fl.Name = "SubTips" Then ' 削除したいフォルダ
fl.Delete (True) ' フォルダを削除
End If
Next
' 後始末
Set fso = Nothing
fso.GetFolder 関数で指定したパスの Folder オブジェクトを取得します。フォルダが存在しないときはエラーが発生します。
pfl.SubFolders プロパティから、そのフォルダ内にある Folder オブジェクトの一覧を取得できます。
fl.Name プロパティから、そのフォルダの名前を取得できます。これで削除したいフォルダを判定します。
fl.Delete 関数でそのフォルダを削除します。使い方は上記で説明した fso.DeleteFolder 関数と同じです。DeleteFolder の第 1 引数に、そのフォルダのパスが渡されます。
複数のフォルダを削除
ワイルドカードを使用して複数のフォルダをまとめて削除できます。
Dim fso As FileSystemObject
Set fso = New FileSystemObject
Call fso.DeleteFolder("D:\Tips*", True) ' 複数のフォルダをまとめて削除
Call fso.DeleteFolder("D:\TipsFolder\*", True) ' すべてのフォルダを削除
' 後始末
Set fso = Nothing
fso.DeleteFolder 関数の第 1 引数にワイルドカードを指定して、一致する複数のフォルダをまとめて削除できます。1 つもフォルダが一致しないときはエラーが発生します。
使用できるワイルドカードには次のものがあります。
パターン | 説明 | 使用例 | 一致例 |
* | 任意の長さの文字 (0 文字以上) | あ* | あ, あい, あいう |
? | 任意の1文字 または 0 文字 | あ? | あい, あか, あき |
D:\Tips* を指定すると次のフォルダが一致します。
D:\Tips
D:\Tips1
D:\Tips12
D:\Tips123
D:\Tips? を指定すると次のフォルダが一致します。
D:\Tips
D:\Tips1
D:\Tips2
D:\TipsFolder\* を指定すると、TipsFolder フォルダ内のすべてのフォルダと一致します。
スポンサーリンク