FileCopy - Zugriff verweigert in Excel VBA
Schritt-für-Schritt-Anleitung
Um eine Datei in Excel VBA zu kopieren, verwende den Befehl FileCopy. Beachte jedoch, dass du beim Kopieren einer geöffneten Datei auf den Laufzeitfehler 70 - Zugriff verweigert stoßen kannst. Hier ist eine einfache Schritt-für-Schritt-Anleitung:
-
Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.
-
Füge ein neues Modul hinzu: Klicke auf Einfügen > Modul.
-
Gib folgenden Code ein:
Sub KopiereDatei()
On Error GoTo Fehlerbehandlung
FileCopy "C:\Mappe1.xls", "D:\Mappe1.xls"
Exit Sub
Fehlerbehandlung:
MsgBox "Fehler: " & Err.Description
End Sub
-
Schließe den VBA-Editor und führe das Makro aus.
Diese Methode führt möglicherweise zu einem Laufzeitfehler 70, wenn die Datei bereits geöffnet ist.
Häufige Fehler und Lösungen
-
Laufzeitfehler 70 - Zugriff verweigert: Dieser Fehler tritt auf, wenn die Datei, die du kopieren möchtest, bereits geöffnet ist. Schließe die Datei oder nutze alternative Methoden, um das Problem zu umgehen.
-
Falscher Dateipfad: Stelle sicher, dass der angegebene Pfad korrekt ist. Ein nicht vorhandener Pfad führt ebenfalls zu Fehlern.
Alternative Methoden
Wenn der Laufzeitfehler 70 auftritt, gibt es verschiedene Alternativen, um Dateien zu kopieren:
-
Datei schließen: Schließe die Datei, bevor du den FileCopy-Befehl ausführst.
-
Kopieren mit Excel.Application: Du kannst die Datei auch über Excel selbst kopieren. Hier ein Beispiel:
Sub KopiereMitExcel()
Dim xlApp As Object
Set xlApp = CreateObject("Excel.Application")
xlApp.Workbooks.Open "C:\Mappe1.xls"
xlApp.Workbooks(1).SaveCopyAs "D:\Mappe1.xls"
xlApp.Quit
Set xlApp = Nothing
End Sub
-
Verwendung von Windows-Shell: Du kannst die Datei auch über die Windows-Shell kopieren.
Sub KopiereMitShell()
Dim shell As Object
Set shell = CreateObject("WScript.Shell")
shell.Run "cmd /c copy C:\Mappe1.xls D:\Mappe1.xls"
Set shell = Nothing
End Sub
Praktische Beispiele
Hier sind einige praktische Beispiele, wie du den FileCopy-Befehl in VBA verwenden kannst:
-
Beispiel 1: Einfacher Kopierbefehl
FileCopy "C:\Beispiel.xls", "D:\Beispiel_kopie.xls"
-
Beispiel 2: Mit Fehlerbehandlung
Sub SicheresKopieren()
On Error Resume Next
FileCopy "C:\Beispiel.xls", "D:\Beispiel_kopie.xls"
If Err.Number <> 0 Then
MsgBox "Ein Fehler ist aufgetreten: " & Err.Description
End If
On Error GoTo 0
End Sub
Tipps für Profis
-
Nutze On Error: Implementiere immer eine Fehlerbehandlung, um Laufzeitfehler zu vermeiden und die Benutzerfreundlichkeit zu erhöhen.
-
Teste in einer sicheren Umgebung: Führe deine Makros in einer Testumgebung aus, um unerwünschte Datenverluste zu vermeiden.
-
Routinen für häufige Aufgaben: Erstelle Routinen für häufige Kopieraufgaben und speichere sie in einem zentralen Modul.
FAQ: Häufige Fragen
1. Warum erhalte ich den Laufzeitfehler 70 bei der Verwendung von FileCopy?
Der Laufzeitfehler 70 tritt auf, wenn du versuchst, eine geöffnete Datei zu kopieren. Schließe die Datei oder nutze alternative Methoden.
2. Gibt es eine Möglichkeit, Dateien während des Betriebs zu kopieren?
Ja, du kannst die Methoden wie SaveCopyAs oder die Windows-Shell nutzen, um Dateien auch während des Betriebs zu kopieren.
3. Welche Excel-Version benötige ich für diese VBA-Befehle?
Die beschriebenen VBA-Befehle sind in den meisten modernen Excel-Versionen verfügbar, einschließlich Excel 2010 und später.