Das Löschen von Dateien mag in der Welt der Programmierung eine elementare Aufgabe sein, doch sie birgt in verschiedenen VB-Sprachen ihre eigenen Herausforderungen und Nuancen. In diesem Artikel bieten wir einen umfassenden Überblick über die verschiedenen Methoden zur Dateilöschung in VBA, VB6, VBScript und VB.NET.
FileSystemobject (VBA, VBS, VB6, [VB.net])
FileSystemObject (FSO) ist eine vielseitige Option für Dateioperationen. Hier ein Beispiel für VBA und VB6:
Public Function DateiLoeschen(strPath As String) As Boolean
Dim fso As New FileSystemObject
If fso.fileexists(strPath) Then
fso.getFile(strPath).Delete()
DateiLoeschen = Not fso.fileexists(strPath)
Else
DateiLoeschen = True
End If
End Function
Auch in VB.NET lässt sich das FileSystemObject nutzen:
Public Function DateiLoeschen4(ByVal strPath As String) As Boolean
Dim fso As Object = CreateObject("Scripting.FileSystemObject")
If fso.fileexists(strPath) Then
fso.getFile(strPath).Delete()
Return Not fso.fileexists(strPath)
Else
Return True
End If
End Function
Kill (VBA, VB.Net, VB6, VBS)
Eine direktere Methode ist der Kill
-Befehl:
Public Function DateiLoeschen2(ByVal strPfad As String) As Boolean
On Error Resume Next
If Len(Dir$(strPfad)) > 0 Then
SetAttr(strPfad, vbNormal)
Kill(strPfad)
Return Len(Dir$(strPfad)) = 0
Else
Return True
End If
End Function
File.IO (VB.Net) mit Recycle Bin (Papierkorb)
In VB.NET kann man Dateien auch in den Papierkorb verschieben:
Public Function Dateiloeschen3(ByVal strPfad As String) As Boolean
On Error Resume Next
If FileIO.FileSystem.FileExists(strPfad) Then
FileIO.FileSystem.DeleteFile(strPfad, FileIO.UIOption.OnlyErrorDialogs, FileIO.RecycleOption.SendToRecycleBin)
Return Not FileIO.FileSystem.FileExists(strPfad)
Else
Return True
End If
End Function
System.IO (VB.Net)
Eine weitere Methode in VB.NET bietet System.IO
:
Public Function DateiLoeschen(ByVal strPfad As String) As Boolean
On Error Resume Next
If System.IO.File.Exists(strPfad) Then
System.IO.File.Delete(strPfad)
Return Not System.IO.File.Exists(strPfad)
Else
Return True
End If
End Function
My.Computer.FileSystem.DeleteFile (VB.NET)
Diese Methode bietet eine einfachere Syntax und zusätzliche Optionen wie das Verschieben in den Papierkorb:
My.Computer.FileSystem.DeleteFile("Pfad/Zur/Datei.txt", _
FileIO.UIOption.AllDialogs, FileIO.RecycleOption.SendToRecycleBin)
Harte Möglichkeit (mit Recycle Bin, Papierkorb) (VB.net, VBA, VB6)
Für fortgeschrittene Anwendungsfälle, wie das Verschieben einer Datei in den Papierkorb, kann die Win32 API SHFileOperation
verwendet werden. Beachten Sie, dass API-Calls in VBS nicht möglich sind:
Option Explicit
' Deklaration der SHFileOperation-Funktion
Private Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" ( _
ByRef lpFileOp As SHFILEOPSTRUCT) As Long
' Definition des SHFILEOPSTRUCT-Typs
Private Type SHFILEOPSTRUCT
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
' Konstanten für verschiedene Operationen und Flags
Private Const FO_DELETE = &H3
Private Const FOF_ALLOWUNDO = &H40
Private Const FOF_NOCONFIRMATION = &H10
Private Const FOF_SILENT = &H4
' Beispiel: Funktion zum Löschen einer Datei mit der Option, diese in den Papierkorb zu verschieben
Public Sub DeleteFileToRecycleBin(filePath As String)
Dim fileOp As SHFILEOPSTRUCT
With fileOp
.wFunc = FO_DELETE
.pFrom = filePath & vbNullChar
.fFlags = FOF_ALLOWUNDO Or FOF_NOCONFIRMATION Or FOF_SILENT
End With
SHFileOperation fileOp
End Sub
In diesem Beispiel:
SHFileOperation
wird deklariert, um Operationen auf Dateien oder Verzeichnissen auszuführen.SHFILEOPSTRUCT
ist der Typ, der die notwendigen Informationen für dieSHFileOperation
-Funktion enthält.- Die Funktion
DeleteFileToRecycleBin
ist ein Beispiel, wie SieSHFileOperation
verwenden können, um eine Datei zu löschen, wobei die Datei in den Papierkorb verschoben wird statt sie endgültig zu entfernen.
API Funktion DeleteFile
Eine weitere API-basierte Methode ist DeleteFile
:
Private Declare Function DeleteFile Lib "kernel32.dll" Alias "DeleteFileA" ( _
ByVal lpFileName As String) As Long
Private Function DateiLoeschen(ByVal strPath As String) As Boolean
' Implementierung der Funktion
End Function
Fazit
Jede der vorgestellten Methoden hat ihre eigenen Vor- und Nachteile, abhängig vom spezifischen Einsatzgebiet und den Anforderungen des Projekts. Dieser Artikel gibt Ihnen einen Überblick über die Optionen, damit Sie die richtige Wahl für Ihre VB-Programmieraufgaben treffen können.