ファイルの削除

ファイルを削除します。

【関数化】 ファイルを削除

ファイルはゴミ箱にいかず削除されます。

' ------------------------------------------------------------
' 説明:ファイルを削除
' 引数:1:削除するファイル名
' 戻値:削除に成功した場合:True
'       削除に失敗した場合:False
' ------------------------------------------------------------
Function DeleteFile(file_name As String) As Boolean
    
    On Error GoTo ErrorHandler
    
    ' ファイルを削除
    Kill file_name
    
    DeleteFile = True
    
    Exit Function

ErrorHandler:
    
    MsgBox "ファイル削除中にエラーが発生しました: " & Err.Description, vbExclamation
    
    DeleteFile = False

End Function

【関数化】 ファイルを削除してゴミ箱に

VBAでゴミ箱に削除するには Win32APIの SHFileOperation 関数を利用します。
ファイルの先頭に記載するようにしてください。

Private Declare PtrSafe Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long

Private Type SHFILEOPSTRUCT
    hWnd As LongPtr
    wFunc As Long
    pFrom As String
    pTo As String
    fFlags As Integer
    fAnyOperationsAborted As Long
    hNameMappings As LongPtr
    lpszProgressTitle As String
End Type

Const FO_DELETE = &H3
Const FOF_ALLOWUNDO = &H40
Const FOF_NOCONFIRMATION = &H10
' ------------------------------------------------------------
' 説明:ファイルを削除してボミ箱へ
' 引数:1:削除するファイル名
' 戻値:削除に成功した場合:0
'       削除に失敗した場合:0以外
' ------------------------------------------------------------
Function DeleteFileRecycle(file_name As String) As Long
    
    Dim fileOp As SHFILEOPSTRUCT
    fileOp.wFunc = FO_DELETE
    fileOp.pFrom = file_name
    fileOp.fFlags = FOF_ALLOWUNDO Or FOF_NOCONFIRMATION
    
    DeleteFileRecycle = SHFileOperation(fileOp)

End Function

コメント