Tipp 1.11 - Dateien löschen

Wie kann ich Dateien mit den Flying Windows löschen?

Mit dieser Funktion können Sie Dateien mit den Flying Windows löschen. Kopieren Sie einfach nachfolgenden Quellcode in die Zwischenablage und fügen Sie anschließend den Inhalt der Zwischenablage in ein neues Modul ein. Die Aufrufparameter finden Sie im Quellcode beschrieben.

Api-AufrufeVerwendete Win32-Api-Aufrufe und Typen: GetDesktopWindow, SHFileOperation - SHFILEOPSTRUCT

Beispiel:

Option Explicit
 
Public Type SHFILEOPSTRUCT
  hwnd                   As Long
  wFunc                  As Long
  pFrom                  As String
  pTo                    As String
  fFlags                 As Integer
  fAborted               As Long
  hNameMaps              As Long
  sProgress              As String
End Type
 
Public Declare Function GetDesktopWindow _
    Lib "user32" () As Long
Public Declare Function SHFileOperation _
    Lib "shell32.dll" Alias _
    "SHFileOperationA" _
    (lpFileOp As SHFILEOPSTRUCT) As Long
 
Public Function DeleteFiles( _
                asFiles() As String, _
                Optional bNoUndo As Boolean = False) _
                As Boolean
  '// -----------------------------------------------------
  '// Methode:   | Löscht eine Anzahl Dateien (in den
  '//            | Papierkorb); Aufruf des "flying windows"
  '//            | Dialogs benötigt VBA6+ wegen Join-Funkt.
  '// -----------------------------------------------------
  '// Parameter: | asFiles = Datenfeld (Array) mit gültigen
  '//            |           Pfaden
  '// -----------------------------------------------------
  '// Rückgabe:  | True bei Erfolg,
  '//            | False bei Abbruch während des Löschens!
  '// -----------------------------------------------------
  '// Autor:     | Stefan Kulpa
  '//            | EDV Innovation & Consulting - Dormagen
  '// -----------------------------------------------------
 
  Const FO_DELETE     As Long = &H3
  Const FOF_ALLOWUNDO As Long = &H40
  Dim uSHFileOp       As SHFILEOPSTRUCT
  Dim sFiles          As String
  sFiles = VBA.Join(asFiles, vbNullChar)
  sFiles = sFiles & vbNullChar
  With uSHFileOp
    .hwnd = GetDesktopWindow()
    .wFunc = FO_DELETE
    .pFrom = sFiles
  End With
  If Not bNoUndo Then uSHFileOp.fFlags = FOF_ALLOWUNDO
  DeleteFiles = (SHFileOperation(uSHFileOp) = 0)
 
End Function