フォルダを空にする方法を解説します。
ワイルドカード「*」を使った一括削除をファイル・フォルダ両方へ実行します。
FileSystemObjectのDeleteFile、DeleteFolderメソッドを使用します。
サンプルコード
Sub フォルダを空にする() Dim Path対象フォルダ As String Path対象フォルダ = "C:\Users\wfsp\Desktop\対象フォルダ" Dim FSO As FileSystemObject Set FSO = CreateObject("Scripting.FileSystemObject") FSO.DeleteFile Path対象フォルダ & "\*" FSO.DeleteFolder Path対象フォルダ & "\*" End Sub
解説
フォルダを空にするには、
- DeleteFileメソッドでフォルダ内のすべてのファイルを削除
- DeleteFolderメソッドでフォルダ内のすべてのフォルダを削除
この二つのメソッドを実行します。
どちらのメソッドもワイルドカード「*」を利用したパターンマッチが可能で、
フォルダパス\*とすればすべてのファイル/フォルダを削除できます。
ファイルの場合はKillステートメントでも同じことができますが、
フォルダの場合はRmDirステートメントではこの処理が行えません。
というのもRmDirステートメントは「空のフォルダを削除する」ことしかできず、
中にファイル・フォルダがひとつでもあるとエラーになります。
この処理を行いたい場合はFileSystemObjectを使用してください。
フォルダを作り直す
一応別解として、フォルダを消してフォルダを作り直す方法もあります。
Sub フォルダを空にする() Dim Path対象フォルダ As String Path対象フォルダ = "C:\Users\wfsp\Desktop\対象フォルダ" Dim FSO As FileSystemObject Set FSO = CreateObject("Scripting.FileSystemObject") FSO.DeleteFolder Path対象フォルダ FSO.CreateFolder Path対象フォルダ End Sub
何らかの理由でパターンマッチがうまく動かない場合は、
こちらの方法もお試しください。