Created by Jim Rech:
Removes a known directory including all of its files and any/all
possible sub-directories of unknown quantity & name/s including their

Const FO_DELETE = &h3&
   hwnd As Long
   wFunc As Long
   pFrom As String
   pTo As String
   fFlags As Integer
   fAnyOperationsAborted As Long
   hNameMappings As Long
   lpszProgressTitle As String
End Type
Private Declare Sub CopyMemory Lib “KERNEL32” Alias “RtlMoveMemory”
(hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)
Private Declare Function SHFileOperation Lib “Shell32.dll” Alias
“SHFileOperationA” (lpFileOp As Any) As Long
Sub Test()
    ShellDelete “c:aaa”
End Sub
Sub ShellDelete(SrcFile As String)
    Dim result As Long
    Dim lenFileop As Long
    Dim foBuf() As Integer
    Dim fileop As SHFILEOPSTRUCT
    lenFileop = LenB(fileop)
    ReDim foBuf(1 To lenFileop)
    With fileop
        .hwnd = 0
       .wFunc = FO_DELETE
       .pFrom = SrcFile & Chr(0) & Chr(0)
        .fFlags = FOF_NOCONFIRMATION
        .lpszProgressTitle = “” & Chr(0) & Chr(0)
    End With
    Call CopyMemory(foBuf(1), fileop, lenFileop)
    Call CopyMemory(foBuf(19), foBuf(21), 12)
    result = SHFileOperation(foBuf(1))
End Sub

Editor’s note: Tested and it works, but I still don’t get it. I’m going to print it out and put it under my pillow for a couple of nights and see if that helps. In the mean time, you can leave a comment explaining it to me.

Posted in Uncategorized

3 thoughts on “ShellDelete

  1. >>Created by Jim Rech:

    I don’t remember creating this but if I did it was only the Sub Test part :-)

  2. Ya mean that neat compact code does the same thing as all the mumbo jumbo below?

    CreateObject(“scripting.filesystemobject”).DeleteFolder “c: emp estdelete”, True

Posting code? Use <pre> tags for VBA and <code> tags for inline.

Leave a Reply

Your email address will not be published.