VBAで
・空フォルダを一括で削除
できます!
※サブフォルダ配下の空フォルダも一括で削除できます。
VBAコード
可読性や保守性を良くするために、処理を以下の2つに分けて作成します。
呼び出し関係は以下です。
ここでは例として
・フォルダ「C:\Users\user\Desktop\test」配下の
・空フォルダを一括で削除
します。
※サブフォルダ配下の空フォルダも削除します。
※削除した空フォルダのパスをイミディエイトウインドウへ出力します。
Option Explicit
'WindowsAPI PathIsDirectoryEmpty
Declare PtrSafe Function PathIsDirectoryEmpty Lib "SHLWAPI.DLL" Alias "PathIsDirectoryEmptyA" (ByVal pszPath As String) As Boolean
'**********************************************************
'メイン処理
'**********************************************************
Sub main()
Dim inputFolder As String
Dim fso As Object
Dim folder As Object
'対象フォルダ
inputFolder = "C:\Users\user\Desktop\test"
Set fso = CreateObject("Scripting.FileSystemObject")
'空フォルダ削除処理を実行
For Each folder In fso.GetFolder(inputFolder).SubFolders
Call deleteEmptyFolders(folder.Path, fso)
Next
MsgBox "空フォルダを削除しました。"
'後片付け
Set fso = Nothing
End Sub
'**********************************************************
'空フォルダ削除処理
'**********************************************************
Private Sub deleteEmptyFolders(ByVal inputFolder As String, ByVal fso As Object)
Dim folder As Object
'サブフォルダの数だけ自身を再帰呼び出し
For Each folder In fso.GetFolder(inputFolder).SubFolders
Call deleteEmptyFolders(folder.Path, fso)
Next
'空フォルダを削除
If PathIsDirectoryEmpty(inputFolder) = 1 Then
fso.DeleteFolder (inputFolder)
Debug.Print inputFolder & "を削除しました。"
End If
End Sub
実行結果
空フォルダを一括で削除できました。
※サブフォルダ配下の空フォルダも削除できました。
参考①
上記のVBAコードは以下の記事を参考にして作成しました。
詳細は以下の記事をご確認ください。
参考②
空フォルダの一覧を作成することもできます。
詳細は以下の記事をご確認ください。