Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Verzeichnis löschen via VBA

Verzeichnis löschen via VBA
20.01.2005 11:26:39
Matthias
Hallo erstmal
Ich habe Folgendes Prob.
Im Verzeichnis D:\Hülle\Prokte
sind mehere Orner mit Unterordnern die wiederum unterorder besitzen
In jeden dieser Ordner sind verschieden Daten typen z.B. "core", "*.dxf", "*.r2 uvm

Wie müsste ich es jetzt angehen damit aus sämtlichen ornern die dateien mit den oben genanten endungen ohne nachfrage gelöscht werden
Bitte um eure Hilfe
MFG Matthias
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Verzeichnis löschen via VBA
20.01.2005 12:05:18
Tom
Hier ein kleines Beispiel:

Sub Kill_Datei()
Const Pfad = "D:\Hülle\Prokte\"
Const Datei = "*.dxl"
Kill Pfad & Datei
End Sub

AW: Verzeichnis löschen via VBA
20.01.2005 12:28:54
Matthias
Danke für deine hilfe funktioniert leider nicht
MFG Blackwarrier
AW: Verzeichnis löschen via VBA
josef
hallo matthias,
das von dir geschilderte problem hatte ich auch mal. eine reine vba lösung gibt es meines wissens nicht. da mußt du auf andere programme zugreifen wie z.b killdir.exe und mittels vba steuern.
allerdings ist diese software mut vorsicht zu genießen !
leider hab ich das programm nicht mehr - google halt mal.
aber sollte jemand ne reine vba - lösung anbieten, wär ich sehr gespannt wie das geht!
gruß
josef
Anzeige
AW: Verzeichnis löschen via VBA
20.01.2005 12:45:47
Matthias
Danke für dein Hilfe
Was lehrt uns das in VBA ist viel möglich leider nicht alles
MFG Matthias
AW: Verzeichnis löschen via VBA
20.01.2005 12:49:01
Josef
Hallo Matthias!
Geht schon!
Die Frage kannst du ja rausnehmen, wenn du sicher bist!


      
Option Explicit
Sub Daten_Loeschen()
Dim fSearch As FileSearch
Dim wkb As Workbook
Dim strPath As String
Dim iCnt As Integer
strPath = 
"D:\Temp\"
Set fSearch = Application.FileSearch
With fSearch
.LookIn = strPath
.SearchSubFolders = 
False  '<<<<Unterordner durchsuchen True/False
.FileType = msoFileTypeAllFiles
.Filename = 
"*.txt"
.Execute
   
For iCnt = 1 To .FoundFiles.Count
      
'zur Vorsicht mal mit Frage
      If MsgBox("Löschen?" & Space(15) & vbLf & vbLf & _
         .FoundFiles(iCnt), vbYesNo) = vbYes 
Then
         
            Kill .FoundFiles(iCnt)
            
      
End If
   
   
Next
End With
End Sub 


Gruß Sepp
Anzeige
sauber !!
josef
hallo sepp,
wär ja auch ein wunder, wenn du nicht ne lösung gehabt hättest.
auch wenns ned mein thread war - vielen dank !!!
gruß
...auch sepp...
AW: Verzeichnis löschen via VBA
20.01.2005 13:08:39
Matthias
Geht leider doch nicht ich habe das programm 2* durchlaufen lassen einmal mit
SearchSubFolders = False
und mit
SearchSubFolders = true
und trotzdem werden nicht alle txt dateien ausden unterordnern gelöscht
MFG Blackwarrier
Anzeige
AW: Verzeichnis löschen via VBA
josef
hallo matthias,
also bei mir läuft das programm von sepp.
lediglich die unterverzeichnisse mit dem haupverzeichnis bleiben ohne dateien erhalten - wie ja auch monika schildert.
josef
frage an j.e.
monika
hallo,
aber was muß man hier noch machen, um nun die leeren verzeichnisse mit variabler anzahl und variablen namen - incl. aller unterverzeichnisse zu löschen ?
schöne grüße aus werl
monika
Anzeige
AW: frage an j.e.
20.01.2005 13:36:54
Josef
Hallo Monika!
Das geht so:
Aber Achtung!
Auf eigene Verantwortung!



      
Sub Daten_Loeschen()
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
'!!!!!!!!!!!!!   Vorsicht! Alle Dateien werden gelöscht !!!!!!!!!!!!!!
'!!!!    Leere Verzeichnisse werden anschliessend auch gelöscht   !!!!
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Dim fSearch As FileSearch
Dim wkb As Workbook
Dim strPath As String, strTemp As String
Dim iCnt As Integer
strPath = 
"D:\Temp\" 'Startverzeichnis

Set fSearch = Application.FileSearch
With fSearch
.NewSearch
.LookIn = strPath
.SearchSubFolders = 
True  '<<<<Unterordner durchsuchen True/False
.FileType = msoFileTypeAllFiles
.Filename = 
"*.txt"
.Execute
   
For iCnt = 1 To .FoundFiles.Count
       strTemp = Left(.FoundFiles(iCnt), Len(.FoundFiles(iCnt)) - _
       InStr(1, StrReverse(.FoundFiles(iCnt)), 
"\"))
       
                  Kill .FoundFiles(iCnt)
                  
      
On Error Resume Next
      RmDir strTemp
      
On Error GoTo 0
   
Next
End With
End Sub 


Gruß Sepp
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Verzeichnis löschen mit VBA in Excel


Schritt-für-Schritt-Anleitung

Um ein Verzeichnis mit Dateien und Unterordnern in Excel zu löschen, kannst Du VBA (Visual Basic for Applications) verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.

  2. Füge ein neues Modul hinzu: Klicke im Menü auf Einfügen und wähle Modul.

  3. Gebe den folgenden Code ein:

    Sub VerzeichnisLöschen()
       Dim fSearch As FileSearch
       Dim strPath As String
       Dim iCnt As Integer
    
       strPath = "D:\Hülle\Prokte\"  ' Passe den Pfad an
    
       Set fSearch = Application.FileSearch
       With fSearch
           .LookIn = strPath
           .SearchSubFolders = True  ' Unterordner durchsuchen
           .FileType = msoFileTypeAllFiles
           .Execute
    
           For iCnt = 1 To .FoundFiles.Count
               Kill .FoundFiles(iCnt)  ' Dateien löschen
           Next iCnt
       End With
    End Sub
  4. Ändere den Pfad im Code zu dem Verzeichnis, das Du löschen möchtest.

  5. Führe das Makro aus: Drücke F5 oder gehe zu Run und wähle Run Sub/UserForm.


Häufige Fehler und Lösungen

  • Error: "Das Verzeichnis kann nicht gefunden werden."

    • Lösung: Überprüfe den angegebenen Pfad. Stelle sicher, dass er korrekt ist.
  • Keine Dateien werden gelöscht.

    • Lösung: Stelle sicher, dass SearchSubFolders auf True gesetzt ist, um auch die Unterordner zu durchsuchen.
  • Löschen funktioniert nicht wie erwartet.

    • Lösung: Überprüfe, ob die Dateien in den Unterverzeichnissen tatsächlich die richtigen Endungen haben.

Alternative Methoden

Wenn Du eine VBA-Lösung bevorzugst, aber andere Ansätze ausprobieren möchtest, kannst Du auch externe Tools wie killdir.exe verwenden. Dieses Programm kann Dir helfen, Verzeichnisse effektiv zu löschen, ist jedoch mit Vorsicht zu genießen. Achte darauf, dass Du alle wichtigen Daten sicherst, bevor Du es verwendest.


Praktische Beispiele

Hier sind zwei nützliche Beispiele, um ein Verzeichnis zu löschen:

  1. Löschen aller .txt-Dateien in einem Verzeichnis:

    Sub TxtDateienLöschen()
       Dim strPath As String
       strPath = "D:\Hülle\Prokte\"
       Kill strPath & "*.txt"
    End Sub
  2. Löschen von Dateien und leeren Verzeichnissen:

    Sub KomplettesVerzeichnisLöschen()
       Dim strPath As String
       strPath = "D:\Hülle\Prokte\"
    
       On Error Resume Next
       Kill strPath & "*.*"  ' Löscht alle Dateien
       RmDir strPath  ' Löscht das Verzeichnis
       On Error GoTo 0
    End Sub

Tipps für Profis

  • Sicherungskopie erstellen: Bevor Du Dateien oder Verzeichnisse löschst, erstelle immer eine Sicherungskopie.
  • Fehlerbehandlung: Implementiere Fehlerbehandlung in Deinem VBA-Code, um unerwartete Probleme zu erkennen und zu lösen.
  • Testläufe: Führe Deinen Code zunächst in einem Testverzeichnis aus, um sicherzustellen, dass alles wie gewünscht funktioniert.

FAQ: Häufige Fragen

1. Wie kann ich spezifische Dateitypen löschen?
Du kannst die Kill-Anweisung mit einem bestimmten Dateimuster verwenden, z.B. Kill "D:\Hülle\Prokte\*.dxf".

2. Kann ich leere Ordner mit VBA löschen?
Ja, Du kannst leere Ordner mit RmDir löschen, nachdem Du alle Dateien darin entfernt hast.

3. Was passiert, wenn ich den Code falsch schreibe?
Im schlimmsten Fall können wichtige Daten verloren gehen. Achte darauf, den Code sorgfältig zu überprüfen und gegebenenfalls Testläufe in einem sicheren Bereich durchzuführen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige