VBATips

ごみ箱を空にする【SHEmptyRecycleBin】【ExcelVBA】

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環境のみ動作します。

関連記事

コメント

タイトルとURLをコピーしました