Windowsのゴミ箱を空にしたい
VBAマクロを実行する際、以下を利用して、削除する場合があります。
フォルダ削除(RmDirステートメント)
ファイルをゴミ箱に移動する【Namespace(10)】
フォルダをゴミ箱に移動する【Namespace(10)】
Windows APIを使用すれば、ごみ箱の中身を空(Empty)にすることが可能です。
Windowsのゴミ箱を空にするサンプルコード
Shell.Application でゴミ箱(Namespace(10))へ削除(移動MoveHere)します。
#If VBA7 Then
Private Declare PtrSafe Function SHEmptyRecycleBin Lib "shell32.dll" Alias "SHEmptyRecycleBinA" (ByVal hwnd As LongPtr, ByVal pszRootPath As String, ByVal dwFlags As Long) As Long
#Else
Private Declare Function SHEmptyRecycleBin Lib "shell32.dll" Alias "SHEmptyRecycleBinA" ( ByVal hwnd As Long, ByVal pszRootPath As String, ByVal dwFlags As Long) As Long
#End If
Private Const NO_DIALOG As Long = &H1 '確認ダイアログ非表示
Private Const NO_PROGRESS As Long = &H2 'プログレスバー非表示
Private Const NO_SOUND As Long = &H4 'サウンド 無効
Public Sub Call_RecycleBinToEmpty()
Dim flg As Long
'■ごみ箱を空にする
flg = NO_DIALOG Or NO_PROGRESS Or NO_SOUND
Call SHEmptyRecycleBin(0, vbNullString, flg)
'■ごみ箱を空にする(結果を取得する場合)
If SHEmptyRecycleBin(0, vbNullString, flags) = 0 Then
MsgBox "ごみ箱を空にしました。"
Else
MsgBox "エラー:ごみ箱を空にできませんでした。"
End If
End Sub
注意点
- 管理者権限が必要な場合があります。
- 本当にデータ削除されますので(完全消去)お気を付けください。
- WindowsAPIなので、Windows環境のみ動作します。



コメント