Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1176to1180
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige