Laufzeitfehler 70 in VBA: Fehler abfangen und beheben
Schritt-für-Schritt-Anleitung
Um den Laufzeitfehler 70 (Zugriff verweigert) in deinem VBA-Projekt abzufangen, kannst du das folgende Beispiel verwenden:
- Öffne den VBA-Editor in Excel (ALT + F11).
- Füge ein neues Modul hinzu (Rechtsklick auf "VBAProject" > Einfügen > Modul).
- Kopiere den nachfolgenden Code und füge ihn in das Modul ein:
Option Explicit
Sub HandleError70()
On Error Resume Next
' Versuche, die Datei zu löschen
Kill "deinDateipfad\deineDatei.txt"
' Prüfe den Error-Code
Do While Err.Number = 70 ' Laufzeitfehler 70
Err.Clear ' Fehler zurücksetzen
' Erneuter Versuch, die Datei zu löschen
Kill "deinDateipfad\deineDatei.txt"
Loop
On Error GoTo 0 ' Fehlerbehandlung zurücksetzen
End Sub
- Passe den Dateipfad und Dateinamen in der
Kill
-Anweisung an.
- Führe das Makro aus, um zu testen, ob es funktioniert.
Häufige Fehler und Lösungen
-
Fehler 70: Zugriff verweigert
- Ursache: Die Datei ist möglicherweise gerade geöffnet oder wird von einem anderen Prozess verwendet.
- Lösung: Stelle sicher, dass die Datei nicht geöffnet ist, bevor du den
Kill
-Befehl ausführst. Nutze die oben genannte Fehlerbehandlungsroutine.
-
Fehler bei der Erstellung der Backup-Datei
- Ursache: Möglicherweise fehlt der Zielordner.
- Lösung: Überprüfe mit
IsDiskFolder
, ob der Zielordner existiert, und erstelle ihn bei Bedarf.
-
Unvorhersehbare Wartezeiten
- Ursache: Manchmal benötigt Excel mehr Zeit, um die Datei freizugeben.
- Lösung: Implementiere eine Schleife, die den
Kill
-Befehl so lange wiederholt, bis der Fehler nicht mehr auftritt.
Alternative Methoden
Wenn die oben genannten Methoden nicht die gewünschten Ergebnisse liefern, kannst du auch folgende Methoden ausprobieren:
- Verwende
DoEvents
: Dies kann helfen, Excel Zeit zu geben, um die Datei freizugeben, bevor du den Kill
-Befehl ausführst.
Do While Err.Number = 70
Err.Clear
Kill "deinDateipfad\deineDatei.txt"
DoEvents ' Gibt Excel Zeit, um die Datei freizugeben
Loop
- Überprüfung, ob die Datei geöffnet ist: Du kannst eine Funktion schreiben, die überprüft, ob eine Datei geöffnet ist, bevor du versuchst, sie zu löschen.
Praktische Beispiele
Hier ist ein einfaches Beispiel, um ein Backup zu erstellen und gleichzeitig den Laufzeitfehler 70 abzufangen:
Sub CreateBackup()
Dim wbMaster As Workbook
Dim backupPath As String
Set wbMaster = ThisWorkbook
backupPath = "deinBackupPfad\" & wbMaster.Name & ".bak"
On Error Resume Next
Kill backupPath ' Versuche, das Backup zu löschen, falls es existiert
' Erstelle das Backup
wbMaster.SaveCopyAs backupPath
' Warte auf die Freigabe der Datei
Do While Err.Number = 70
Err.Clear
Kill backupPath
Loop
On Error GoTo 0
End Sub
Tipps für Profis
- Verwende Error-Handling: Immer
On Error Resume Next
verwenden, um sicherzustellen, dass dein Code nicht bei einem Laufzeitfehler abbricht.
- Logging: Füge Logging hinzu, um zu protokollieren, wann und wo Fehler auftreten. Das kann bei der Fehlersuche hilfreich sein.
- Regelmäßige Backups: Denke daran, regelmäßig Backups deiner wichtigen Dateien zu erstellen, um Datenverlust zu vermeiden.
FAQ: Häufige Fragen
1. Was ist der Laufzeitfehler 70?
Der Laufzeitfehler 70 tritt auf, wenn der Zugriff auf ein Objekt verweigert wird, beispielsweise wenn eine Datei noch geöffnet ist.
2. Wie kann ich den Fehler 70 umgehen?
Du kannst den Fehler abfangen, indem du On Error Resume Next
verwendest und dann in einer Schleife versuchst, die Datei zu löschen, bis der Zugriff gewährt wird.
3. Was sollte ich tun, wenn der Fehler weiterhin auftritt?
Überprüfe, ob die Datei von einem anderen Prozess verwendet wird, und schließe gegebenenfalls alle Programme, die auf die Datei zugreifen könnten.