1.5k Aufrufe
Gefragt in Tabellenkalkulation von
Liebes Forum Mitglieder,

ich möchte via VBA Dateien löschen

Das Makro müsste alle Dateien löschen das die Endung a hat

Beispiel:
Variabele Dateiname a.xls 'löschen
Variabele Dateiname a.pdf 'löschen

Variabele Dateiname b.xls ' darf nicht gelöscht werden
Variabele Dateiname g.pdf ' darf nicht gelöscht werden

Wie setzte ich dies im MAkro um?

Sub Loeschen()
Dim Datei As String
Datei = "c:\daten\test\test,xls"
Kill Datei
End Sub

Danke für eure Hilfe
Schlumpfine123

6 Antworten

0 Punkte
Beantwortet von nostalgiker6 Experte (7.1k Punkte)
Wie wäre es - statt VBA - mit einem Batch: del *a.* /s

Das einmal auf jeder Platte (aus der Root) bzw. jedem obersten Ordner, aus dem gelöscht werden soll, laufen lassen, dann sind alle diese Dateien - wie gewünscht - weg. (Natürlich kann man auch noch den Wechsel der Platten oder Ordner in den Batch einbauen, so dass ein einziger Auruf genügt.)

Und zum Überprüfen, ob es auch korrekt funktioniert, erst einmal nur anzeigen lassen, was gelöscht würde: DIR *a.*
Oder - noch besser - die Namen der zu löschenden Dateien in eine Datei schreiben:
DIR *a.* > loeschen.txt und dann kontrollieren
0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo,

oder per VBA:

Sub loeschen()
Dim killPfad, strPfad, strDatnam As String

'Pfad, ggf. anpassen
strPfad = "C:\test\"
strDatnam = Dir(strPfad)

Do While Len(strDatnam)

'Prüfen ob Dateiname ohne Endung gleich a ist und falls ja Datei löschen
If Left(strDatnam, InStrRev(strDatnam, ".") - 1) = "a" Then
killPfad = strPfad & strDatnam
Kill killPfad
End If

strDatnam = Dir

Loop

End Sub


Gruß

M.O.
0 Punkte
Beantwortet von nostalgiker6 Experte (7.1k Punkte)
Pardon:
Bei meinen Vorschlägen zur Kontrolle (in #1, unten) fehlt am Ende jeweils das ... /s
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all ^^

Kill "D:\Temp\*a.xls"


Gruss nighty
0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo Nighty,

müsste doch

Kill "C:\daten\test\a.*"


heißen, oder nicht?
(Ich habe mal wieder viel zu kompliziert gedacht!).

Gruß

M.O.
0 Punkte
Beantwortet von nostalgiker6 Experte (7.1k Punkte)
Nee: *a.* - wie in #1
...