Live-Forum - Die aktuellen Beiträge
Datum
Titel
15.02.2025 18:43:21
15.02.2025 14:45:42
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: alle *.xls dateien in einem ordner löschen

alle *.xls dateien in einem ordner löschen
22.07.2008 14:30:14
Bastian
hallo an alle,
ich möchte per makro alle *.xls dateien eines ordners löschen lassen.
geht das?
ich habe das schon mit

Sub dateien_loeschen()
Dim Tabelle As Worksheet
Dim i As Long
'Verzeichnis ändern
Const verz = "c:\test\test"
On Error GoTo fehler
ChDir verz
With Application.FileSearch
.NewSearch
.LookIn = verz
.SearchSubFolders = False
.FileType = msoFileTypeExcelWorkbooks
.Execute
For i = 1 To .FoundFiles.Count
Kill .FoundFiles(i)
Next i
End With
Exit Sub
fehler:
MsgBox "Es gibt kein Verzeichnis mit dem Namen " & verz
End Sub


probiert, aber das funktioniert nicht.
Hat jemand einen Tip?
Grüsse
bastian

Anzeige

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: alle *.xls dateien in einem ordner löschen
22.07.2008 14:35:00
Rudi
Hallo,
ohne Schleife:
Kill verz &"\*.xls"
Achtung! Kill löscht ohne Papierkorb.
Gruß
Udo

AW: alle *.xls dateien in einem ordner löschen
22.07.2008 14:39:00
Bastian
hallo rudi,
danke für die schnelle antwort.
aber leider kann ich damit nicht viel anfangen.
das andere makro habe ich im internet gefunden und es versucht anzuwenden.
kannst du mir zeiten, wie und wo ich die "schleife" herausnehme?
gruss
bastian

Anzeige
AW: alle *.xls dateien in einem ordner löschen
22.07.2008 14:55:27
Rudi
Hallo,
jetzt erst gesehen: XL2007. Da gibt es das FileSearch-Objekt nicht mehr.
Ohne Netz und doppelten Boden:

Sub KillEmAll()
'löscht alle .xls im Verzeichnis
Const strVerz As String = "c:\test\test\"
Kill strVerz & "*.xls"
End Sub


Gruß
Rudi

Anzeige
AW: alle *.xls dateien in einem ordner löschen
22.07.2008 15:10:20
Bastian
hallo rudi,
da bekomme ich die fehlermeldung 70 zugriff verweigert....
gruss
bastian

AW: alle *.xls dateien in einem ordner löschen
22.07.2008 15:39:16
Rudi
dann hast du ein Berechtigungsproblem oder eine der Dateien ist geöffnet.
Bei mir geht das.
Gruß
Rudi

AW: alle *.xls dateien in einem ordner löschen
22.07.2008 16:24:12
Bastian
hallo rudi,
danke für die antwort.
das ist ein firmennetzwerklaufwerk.
kann es sein, dass ich da zwar per explorer drauf zugreifen kann, aber nicht per makro?
oder kann es sein, dass es nicht funktioniert, wenn die xlsm im gleichen verzeichnis liegt, wie die zu löschenden xls?
gruss und dank
bastian

Anzeige
AW: alle *.xls dateien in einem ordner löschen
22.07.2008 16:33:01
Andi
Hi,
jupp, daran wird's liegen.
Hab gerade ausprobiert, dass der Befehl
Kill "C:\Test\*.xls"
auch alle xlsm-Dateien löscht. Wenn jetzt die Datei mit dem Lösch-Makro, die ja logischerweise zur Laufzeit geöffnet ist, im gleichen Ordner liegt, dann gibt's ein Zugriffsproblem, weil offene Dateien nicht gelöscht werden können.
Schönen Gruß,
Andi

Anzeige
AW: alle *.xls dateien in einem ordner löschen
22.07.2008 17:27:00
Rudi
Hallo,
dann so:

Sub DerFileKiller()
Dim oFS As Object, oFolder As Object, oFile As Object
Const strFolder As String = "c:\test\test"
Const strFileType As String = "*.xls"
Set oFS = CreateObject("scripting.filesystemobject")
Set oFolder = oFS.getfolder(strFolder)
For Each oFile In oFolder.Files
If oFile Like strFileType And oFile.Name  ThisWorkbook.Name Then
oFS.deletefile oFile
End If
Next
End Sub


Gruß
Rudi

Anzeige
AW: alle *.xls dateien in einem ordner löschen
22.07.2008 17:42:00
Bastian
P E R F E K T ! ! !

AW: alle *.xls dateien in einem ordner löschen
22.07.2008 14:38:58
Andi
Hi,
Application.FileSearch wird von XL2007 nicht mehr unterstützt; alternativ gibt es die Dir-Anweisung.
Für Dein Problem tut es aber auch einfach:

Sub loeschen()
Kill "C:\Test\*.xls"
End Sub


Schönen Gruß,
Andi

Anzeige
AW: alle *.xls dateien in einem ordner löschen
22.07.2008 14:41:11
Bastian
hi andi,
das habe ich versucht...
kann es sein dass excel probleme mit verzeichnispfaden wie z.b:
T:\dateien\alle dateien\bastian eberl\excel\test folder fuer macros\*.*
hat?
gruss
bastian

AW: alle *.xls dateien in einem ordner löschen
22.07.2008 14:51:00
Andi
Hi,
nein, kann eigentlich nicht sein.
Woran hakt's denn (Fehlermeldung?)?
Schönen Gruß,
Andi

Anzeige
AW: alle *.xls dateien in einem ordner löschen
22.07.2008 15:05:00
Bastian
nein, keine fehlermeldung....
einfach keine action.
gruss
bastian

AW: alle *.xls dateien in einem ordner löschen
22.07.2008 15:11:00
Andi
Hi,
seltsam; zeig doch mal bitte Dein komplettes Makro her.
Schönen Gruß,
Andi

AW: alle *.xls dateien in einem ordner löschen
22.07.2008 15:15:00
Bastian
hi andi,
meinst du alle markos die zur arbeitsmappe gehören?
gruss
bastian

Anzeige
AW: alle *.xls dateien in einem ordner löschen
22.07.2008 15:22:13
Andi
Hi,
nein, nur das zum löchen der Dateien.
Schönen Gruß,
Andi

AW: alle *.xls dateien in einem ordner löschen
22.07.2008 15:26:00
Bastian
hi,

Sub loeschen()
Kill "C:\Test\*.xls"
End Sub


und


Sub KillEmAll()
'löscht alle .xls im Verzeichnis
Const strVerz As String = "c:\test\test\"
Kill strVerz & "*.xls"
End Sub


ich habe beide probiert...
gruss
bastian

Anzeige
AW: alle *.xls dateien in einem ordner löschen
22.07.2008 15:51:19
Andi
Hi,
sehr seltsam, bei mir funktionieren beide Codes...
Ich lass hier mal offen, vielleicht fällt jemand anderem was dazu ein.
Schönen Gruß,
Andi
P.S.: Ist jetzt sehr unwahrscheinlich, aber kann es sein, dass die Dateien gelöscht sind, aber noch angezeigt werden, weil die Ordner-Ansicht nicht aktualisiert wurde?

Anzeige
noch offen... (ot)
22.07.2008 15:54:00
Andi
.

AW: noch offen... (ot) Blanks im Pfad?
22.07.2008 18:27:00
firmus
Hi,
ich habe da mal was gelesen mit LEERZEICHEN (Blanks) im Pfad.
In solchen Fällen hat der gesamte Pfad in Hochkommas zu stehen.
Windows kommt damit nicht klar.
Beispiel:
C:\Meine Daten\*.xls ergibt einen Fehler
C:\MeineDaten\*.xls wird funktionieren.
"C:\Meine Daten\*.xls" wird funktionieren.
Gruß,
Firmus
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Alle *.xls Dateien in einem Ordner löschen


Schritt-für-Schritt-Anleitung

Um alle *.xls Dateien in einem Ordner mit VBA zu löschen, kannst Du den folgenden Code verwenden. Dieser Ansatz ist besonders nützlich, wenn Du eine große Anzahl an Excel-Dateien löschen möchtest.

Sub KillEmAll()
    ' Löscht alle .xls im Verzeichnis
    Const strVerz As String = "c:\test\test\"
    Kill strVerz & "*.xls"
End Sub
  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.
  2. Füge ein neues Modul hinzu, indem Du mit der rechten Maustaste auf "VBAProject" klickst und "Einfügen" > "Modul" wählst.
  3. Kopiere den obigen Code in das Modul.
  4. Ändere den Pfad in strVerz entsprechend Deinem Verzeichnis.
  5. Führe das Makro aus, um alle *.xls Dateien in dem angegebenen Ordner zu löschen.

Häufige Fehler und Lösungen

  1. Fehlermeldung 70: Zugriff verweigert

    • Stelle sicher, dass Du über die nötigen Berechtigungen für den Zugriff auf den Ordner verfügst oder dass keine der Dateien geöffnet ist.
  2. Excel Datei kann nicht gelöscht werden

    • Wenn sich die Excel-Datei, die das Makro ausführt, im selben Ordner wie die zu löschenden Dateien befindet, kann dies zu einem Zugriffsproblem führen. Verschiebe die Datei an einen anderen Ort, um dies zu vermeiden.
  3. Keine Fehlermeldung, aber keine Aktion

    • Überprüfe, ob der Pfad korrekt eingegeben wurde. Auch Leerzeichen im Pfad können Probleme verursachen. Verwende Hochkommas um den Pfad, z.B. "C:\Meine Daten\*.xls".

Alternative Methoden

Wenn der Kill Befehl nicht funktioniert, kannst Du auch die FileSystemObject-Methode verwenden:

Sub DerFileKiller()
    Dim oFS As Object, oFolder As Object, oFile As Object
    Const strFolder As String = "c:\test\test"

    Set oFS = CreateObject("scripting.filesystemobject")
    Set oFolder = oFS.getfolder(strFolder)

    For Each oFile In oFolder.Files
        If oFile Like "*.xls" And oFile.Name <> ThisWorkbook.Name Then
            oFS.deletefile oFile
        End If
    Next
End Sub

Diese Methode durchläuft alle Dateien im angegebenen Ordner und löscht nur die .xls Dateien, die nicht mit der aktuellen Arbeitsmappe identisch sind.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie Du die oben genannten Methoden nutzen kannst:

  • Um alle Excel-Dateien in einem bestimmten Verzeichnis zu löschen, setze den strVerz Pfad auf den entsprechenden Ordner.
  • Wenn Du nur Dateien löschen möchtest, die älter als ein bestimmtes Datum sind, kannst Du eine zusätzliche Bedingung in die Schleife einfügen, um das Änderungsdatum zu prüfen.

Tipps für Profis

  • Backup erstellen: Bevor Du alle Dateien löschst, stelle sicher, dass Du ein Backup hast, um Datenverluste zu vermeiden.
  • Testlauf: Führe zunächst das Makro in einem Testverzeichnis aus, um sicherzustellen, dass es wie gewünscht funktioniert.
  • Automatisierung: Du kannst das Makro auch so einrichten, dass es automatisch zu bestimmten Zeiten ausgeführt wird, um regelmäßig alte Dateien zu löschen.

FAQ: Häufige Fragen

1. Was passiert, wenn ich eine Datei lösche, die ich nicht mehr benötige?
Wenn Du eine Datei mit dem Kill Befehl löschst, wird sie ohne Möglichkeit zur Wiederherstellung gelöscht. Stelle sicher, dass Du die richtige Datei löschst.

2. Kann ich auch andere Dateitypen löschen?
Ja, einfach den Dateityp im Code anpassen, z.B. *.xlsx für neuere Excel-Dateien.

3. Wie kann ich sicherstellen, dass ich keine wichtigen Dateien lösche?
Überprüfe den Inhalt des Ordners vor dem Ausführen des Makros oder implementiere eine Bestätigungsabfrage im Code.

4. Funktioniert dies in allen Excel-Versionen?
Die Beispielcodes sollten in Excel 2007 und neuer funktionieren. Achte darauf, dass Application.FileSearch in Excel 2007 nicht mehr verfügbar ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige