Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Ordner löschen Zugriff verweigert

Ordner löschen Zugriff verweigert
SteffenS
Hallo Zusammen,
ich möchte per Makro einen kompletten Ordner löschen. Mit dem Code:
Sub test()
Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
Dim qpath As String, zpath As String, afolder As String, astring As String
'aktuellen Pfad detzen
qpath = ThisWorkbook.Path
'Pfad 1 Ebene höher ermitteln
Dim stellen, go_on As Long
stellen = 0
go_on = 0
'Oberordner ermitteln
path_lenght = Len(qpath)
For i = path_lenght To 1 Step -1
If go_on = 0 Then
If (Mid(qpath, i, 1))  "\" Then
stellen = stellen + 1
Else
go_on = 1
End If
End If
Next i
'Pfad ermitteln
zpath = Left(qpath, Len(qpath) - stellen)
afolder = Right(qpath, stellen) & "\"
'Ordner löschen sofern vorhanden
If Dir(zpath & "\backup_rollout\" & afolder, vbDirectory)  "" Then
Set f = FSO.GetFolder(zpath & "\backup_rollout\" & afolder)
f.Delete
End If
Set FSO = Nothing
End Sub
funktioniert dies unter Excel 2003 und Windows 7 einwandfrei.
Bei Excel 2000 und XP immer erscheint immer die Meldung Zugriff verweigert.
Ich kann den Ordner auch nicht manuell löschen.
Schließe ich die Mappe kann ich den Ordner ganz normal löschen.
Was kann ich tun damit der Ordner nicht "blockiert" ist und das Makro den Ordner löscht
Danke Euch.
VG
Steffen
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Ordner löschen Zugriff verweigert
25.09.2010 08:15:47
JogyB
Hallo Steffen,
das Problem ist der Dir-Befehl, damit blockiert Excel den Ordner. Aber der ist ja gottseidank überflüssig wie ein Kropf.
Sub test()
Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
Dim qpath As String, zpath As String, afolder As String, astring As String
Dim stellen As Long
'aktuellen Pfad detzen
qpath = ThisWorkbook.Path
'Pfade ermitteln
stellen = Len(qpath) - InStrRev(qpath, "\")
zpath = Left(qpath, Len(qpath) - stellen)
afolder = Right(qpath, stellen) & "\"
'Ordner löschen sofern vorhanden
On Error Resume Next
FSO.GetFolder(zpath & "backup_rollout\" & afolder).Delete
On Error GoTo 0
Set FSO = Nothing
End Sub

Ich habe dann gleich noch die Pfadbestimmung etwas vereinfacht und den Fehler mit dem doppelten Backslash korrigiert (am Ende von zPath steht schon einer und Du fügst dann noch "\backup_rollout\" hinzu).
Außerdem waren in Deinem urpsrünglichen Code drei Variablen (i, f und path_lenght) nicht deklariert - d.h. Du hast am Anfang des Moduls kein Option Explicit. Das kannst Du automatisch setzten lassen ("Variablendeklaration erforderlich" in den Optionen des VBE), was man bei "VBA gut" eigentlich schon längst getan haben sollte.
Gruß, Jogy
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Ordner in Excel löschen: Zugriff verweigert beheben


Schritt-für-Schritt-Anleitung

Um einen kompletten Ordner in Excel per VBA zu löschen, ohne dass die Fehlermeldung "Zugriff verweigert" erscheint, kannst Du den folgenden VBA-Code verwenden. Dieser Code wurde optimiert, um den Zugriff auf den Ordner zu umgehen, wenn Excel ihn blockiert.

Sub test()
    Dim FSO As Object
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Dim qpath As String, zpath As String, afolder As String
    Dim stellen As Long

    ' Aktuellen Pfad setzen
    qpath = ThisWorkbook.Path

    ' Pfade ermitteln
    stellen = Len(qpath) - InStrRev(qpath, "\")
    zpath = Left(qpath, Len(qpath) - stellen)
    afolder = Right(qpath, stellen) & "\"

    ' Ordner löschen sofern vorhanden
    On Error Resume Next
    FSO.GetFolder(zpath & "backup_rollout\" & afolder).Delete
    On Error GoTo 0

    Set FSO = Nothing
End Sub

Dieser Code funktioniert unter Excel 2003 und Windows 7 optimal. Unter Excel 2000 und XP kann es jedoch zu einem "Zugriff verweigert"-Fehler kommen. Achte darauf, dass der Pfad korrekt ist und keine doppelten Backslashes enthalten sind.


Häufige Fehler und Lösungen

Problem: "Zugriff auf Ordner verweigert"
Lösung: Stelle sicher, dass der Excel-Prozess nicht den Ordner verwendet. Schließe die Arbeitsmappe, bevor Du versuchst, den Ordner zu löschen.

Problem: Makro läuft, aber der Ordner wird nicht gelöscht.
Lösung: Überprüfe den Pfad im Code und stelle sicher, dass der Ordner tatsächlich existiert. Nutze On Error Resume Next, um Fehler beim Löschen abzufangen.


Alternative Methoden

Wenn das Löschen eines Ordners mit VBA nicht funktioniert, kannst Du auch die Windows-Befehlszeile verwenden:

  1. Drücke Win + R, um das Ausführen-Fenster zu öffnen.
  2. Gebe cmd ein und drücke Enter.
  3. Benutze den Befehl rmdir /s /q "C:\Pfad\zum\Ordner".

Diese Methode umgeht die Einschränkungen von Excel und funktioniert unabhängig von der VBA-Umgebung.


Praktische Beispiele

Hier ist ein Beispiel für die Verwendung des VBA-Codes in einer realen Situation:

Angenommen, Du hast einen Ordner namens "backup_rollout", der sich im gleichen Verzeichnis wie Deine Excel-Datei befindet. Um diesen Ordner zu löschen, kannst Du den oben genannten VBA-Code verwenden.

Stelle sicher, dass der Ordner nicht geöffnet ist, und führe das Makro aus. Der Ordner sollte ohne Fehlermeldungen gelöscht werden.


Tipps für Profis

  • Verwende Option Explicit am Anfang Deines VBA-Moduls, um Variablen zu deklarieren und Fehler zu vermeiden.
  • Teste Deinen Code in einer sicheren Umgebung, bevor Du ihn in einer produktiven Excel-Datei verwendest.
  • Halte Deine VBA-Referenzen aktuell, um Probleme mit der Kompatibilität zu vermeiden.

FAQ: Häufige Fragen

1. Warum erscheint die Fehlermeldung "Zugriff verweigert"?
Diese Fehlermeldung tritt auf, wenn Excel versucht, auf einen Ordner zuzugreifen, der von einer anderen Anwendung oder dem Betriebssystem gesperrt ist.

2. Kann ich den Ordner manuell löschen, wenn das Makro fehlschlägt?
Ja, in der Regel kannst Du den Ordner manuell löschen, nachdem Du die Excel-Datei geschlossen hast. Wenn der Ordner auch dann nicht gelöscht werden kann, könnte ein anderes Programm darauf zugreifen.

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