和風スパゲティのレシピ

日本語でコーディングするExcelVBA

フォルダを空にする(ファイル・フォルダを全削除)

フォルダを空にする方法を解説します。


ワイルドカード「*」を使った一括削除をファイル・フォルダ両方へ実行します。

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

何らかの理由でパターンマッチがうまく動かない場合は、
こちらの方法もお試しください。