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

Forumthread: Zugriff verweigert bei Ordnerlöschung

Zugriff verweigert bei Ordnerlöschung
22.06.2013 14:16:51
Reinhard
Hallo Wissende,
die Mappe: https://www.herber.de/bbs/user/85958.xlsm
hat die einzigen Codes im Modul der Userform1, die Codes sieht man
nachstehend.
Nach Userform_Activate existiert der Ordner "K:\ABCDEF" auf jeden Fall.
(jaja, klar wenn kein Fehler auftritt *gg*)
Bei UnLoad der UF (CommandButton2) soll dieser Ordner gelöscht werden.
Das geht nicht und es kommt der Fehler "Zugriff verweigert"!?
Hinweis, es liegt nicht an irgendwelchen Adminrechten bei Ordnern o.ä.
Und, es kann auch nicht daran liegen daß im Ordner sichtbare
Dateien vorhanden sind, er ist dem Anschein nach leer wie alle leeren
Ordner.
(Falls verwirrend, jeder Ordner hat die "datei" nul. Halt unsichtbar)
Ja, ich habe schon gegooglet und auch hier recherchiert nach
zugriff verweigert ordner
aber nunja, nach drei Tagen Beschäftigung mit dem Problem
frage ich dann doch mal hier an.
Gruß ^ Danke
Reinhard

Option Explicit
Const dirName = "K:\ABCDEF"
'References: Microsoft Office X.0 Object Library
' Microsoft Scripting Runtime
Private Sub CommandButton1_Click()
' Explorer
Dim f As Office.FileDialog
Set f = Application.FileDialog(msoFileDialogFilePicker)
f.InitialFileName = dirName
f.Show
Set f = Nothing
'DoEvents
End Sub
Private Sub CommandButton2_Click()
'Unload
Dim fso As Scripting.FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")
Dim f As Scripting.Folder
Set f = fso.GetFolder(dirName)
'MsgBox Len(Dir(dirName, vbDirectory)) = 0
'On Error Resume Next
f.Delete (True)
Set f = Nothing
Set fso = Nothing
'MsgBox Len(Dir(dirName, vbDirectory)) = 0
Unload UserForm1
End Sub
Private Sub UserForm_Activate()
If Len(Dir(dirName, vbDirectory)) = 0 Then MkDir (dirName)
End Sub

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zugriff verweigert bei Ordnerlöschung
22.06.2013 15:45:32
Oberschlumpf
Hi Reinhard
Nach Klick auf den Explorer-Button + Anzeige des Ordners im Windowsexplorer "hält" Windows sozusagen den Zeiger auf den ausgewählten Ordner, hier "K:\ABCDEF" - und verweigert jeden schreibenden Zugriff (Löschen ist auch Schreiben).
Ändere deinen Code mal wie folgt:
erst die Zeile
ChDir "C:\"
und dann
f.Delete (True)
In diesem Fall gibt Windows die "Kontrolle" über "K:\ABCDEF" ab, und du kannst damit wieder machen, was du willst.
Hilfts?
Ciao
Thorsten

Anzeige
AW: Zugriff verweigert bei Ordnerlöschung
25.06.2013 12:58:44
Reinhard
Hallo Thorsten,
sorry daß ich erst jetzt antworte. Ich bekam keine Emailbenachrichtigung über deine
Antwort. Liegt daran daß ich früher immer angehakt habe "bei Anworten Emailbenachrichtigung"
Dann bastelte Hans hier rum und durch den Haken bekam ich dann zwei Benachrichtigungen.
Deshlab ließ ich dieses mal das Häkchen weg, ging wohl schief.
Como siempre danke. Ich teste es gleich aus, wenn es funktioniert melde ich mich nicht mehr.
Ansonsten stelle ich durch eine Antwort die Frage auf noch offen.
Gruß
Reinhard
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zugriff verweigert bei Ordnerlöschung in Excel VBA


Schritt-für-Schritt-Anleitung

Um den Fehler "Zugriff verweigert" beim Löschen eines Ordners in Excel VBA zu beheben, kannst du die folgenden Schritte durchführen:

  1. Öffne dein VBA-Editor: Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.

  2. Füge den folgenden Code in dein Modul ein:

    Option Explicit
    Const dirName = "K:\ABCDEF" ' Der Pfad des Ordners, den du löschen möchtest
    
    Private Sub CommandButton2_Click()
       Dim fso As Scripting.FileSystemObject
       Set fso = CreateObject("Scripting.FileSystemObject")
    
       ' Ändere das Verzeichnis, um den Zugriff zu gewähren
       ChDir "C:\"
    
       ' Lösche den Ordner
       fso.DeleteFolder dirName, True
    
       Set fso = Nothing
       Unload UserForm1
    End Sub
  3. Führe den Code aus: Klicke auf den Button, der den Löschvorgang auslöst, und überprüfe, ob der Ordner erfolgreich gelöscht wurde.

  4. Teste den Code: Achte darauf, dass der Ordner "K:\ABCDEF" existiert und keine offenen Dateien oder Prozesse darauf zugreifen.


Häufige Fehler und Lösungen

  • Zugriff auf Ordner verweigert: Dieser Fehler tritt häufig auf, wenn Windows den Zugriff auf den Ordner blockiert. Eine einfache Lösung besteht darin, das Verzeichnis vor dem Löschen mit ChDir zu wechseln, wie oben beschrieben.

  • Ordner scheint leer zu sein, ist es aber nicht: Manchmal können unsichtbare Dateien, wie z.B. eine „nul“-Datei, im Ordner vorhanden sein. Vergewissere dich, dass der Ordner tatsächlich leer ist, bevor du versuchst, ihn zu löschen.


Alternative Methoden

Falls die oben genannten Schritte nicht funktionieren, kannst du folgende Methoden ausprobieren:

  1. Verwende die Windows Eingabeaufforderung: Du kannst den Ordner auch über die Eingabeaufforderung löschen. Öffne die Eingabeaufforderung und gib ein:

    rmdir /s /q "K:\ABCDEF"
  2. PowerShell-Skript: Du kannst auch ein PowerShell-Skript verwenden, um den Ordner zu löschen:

    Remove-Item "K:\ABCDEF" -Recurse -Force

Praktische Beispiele

Hier ist ein Beispiel, das den Fehler "Zugriff verweigert" behandelt und den Ordner löscht:

Private Sub CommandButton2_Click()
    Dim fso As Scripting.FileSystemObject
    Set fso = CreateObject("Scripting.FileSystemObject")

    ' Wechsel das Verzeichnis
    ChDir "C:\"

    ' Überprüfe, ob der Ordner existiert
    If fso.FolderExists(dirName) Then
        fso.DeleteFolder dirName, True
    Else
        MsgBox "Ordner existiert nicht."
    End If

    Set fso = Nothing
    Unload UserForm1
End Sub

Dieses Beispiel stellt sicher, dass der Ordner existiert, bevor versucht wird, ihn zu löschen.


Tipps für Profis

  • Referenzen setzen: Stelle sicher, dass die Microsoft Scripting Runtime in deinen Verweisen aktiviert ist. Du kannst dies über Extras > Verweise im VBA-Editor tun.

  • Fehlerbehandlung: Füge Fehlerbehandlungsroutinen hinzu, um spezifische Fehler abzufangen und zu behandeln. Dies kann dir helfen, besser zu verstehen, warum ein Zugriff verweigert wird.

  • Testumgebung: Teste deine Codes immer in einer sicheren Umgebung, bevor du sie auf produktive Daten anwendest.


FAQ: Häufige Fragen

1. Warum erhalte ich den Fehler "Excel Zugriff verweigert"?
Dieser Fehler tritt auf, wenn Windows den Zugriff auf den Ordner blockiert, möglicherweise weil er von einem anderen Prozess verwendet wird.

2. Was kann ich tun, wenn ich eine "nul"-Datei im Ordner habe?
Die "nul"-Datei ist unsichtbar und könnte den Löschvorgang verhindern. Stelle sicher, dass der Ordner tatsächlich leer ist, bevor du versuchst, ihn zu löschen.

3. Wie kann ich sicherstellen, dass mein VBA-Skript funktioniert?
Teste dein Skript gründlich und stelle sicher, dass du die richtigen Berechtigungen hast, um auf den Ordner zuzugreifen und ihn zu löschen.

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