Makro ausführen bei schreibgeschützten Excel-Dateien
Schritt-für-Schritt-Anleitung
Um ein Makro auszuführen, wenn eine Excel-Datei schreibgeschützt geöffnet ist, kannst du die folgenden Schritte befolgen:
-
Öffne die schreibgeschützte Excel-Datei.
-
Verwende das folgende Makro, um die Datei unter einem neuen Namen zu speichern:
Sub SaveAsNewFile()
Dim newFileName As String
newFileName = "L:\Produktion\Planung\auftraege\ff\PPS-Tools\auftraege2000_neu_1_Material-Eingang_neu.xls"
' Fehlerbehandlung aktivieren
On Error Resume Next
' Speichern unter neuem Namen
ActiveWorkbook.SaveAs Filename:=newFileName, FileFormat:=xlNormal, Password:="", WriteResPassword:="999888", ReadOnlyRecommended:=False, CreateBackup:=False
' Fehlerbehandlung deaktivieren
On Error GoTo 0
End Sub
-
Um das Löschen von Blättern ohne Bestätigungsdialog zu ermöglichen, füge diese Zeile vor dem Löschen hinzu:
Application.DisplayAlerts = False
-
Vergiss nicht, die Warnung nach dem Löschen wieder zu aktivieren:
Application.DisplayAlerts = True
Häufige Fehler und Lösungen
Laufzeitfehler 1004: Dieser Fehler tritt auf, wenn du versuchst, die Datei unter demselben Namen zu speichern, während sie schreibgeschützt ist. Überprüfe, ob du einen neuen Dateinamen verwendest.
Bestätigungsdialog beim Löschen von Blättern: Wenn du beim Löschen von Blättern gefragt wirst, ob du sie wirklich löschen möchtest, stelle sicher, dass du Application.DisplayAlerts = False
korrekt eingesetzt hast.
Alternative Methoden
Eine alternative Methode besteht darin, die Datei zuerst in den Schreibschutzmodus zu entfernen, bevor du versuchst, sie zu speichern. Dies kann durch das Setzen der ReadOnly
-Eigenschaft auf False
erfolgen. Beachte jedoch, dass dies nur funktioniert, wenn du die entsprechenden Berechtigungen hast.
Praktische Beispiele
Hier ist ein einfaches Beispiel, um den Schreibschutz vor dem Speichern zu entfernen:
Sub RemoveReadOnlyAndSave()
Dim filePath As String
filePath = "L:\Produktion\Planung\auftraege\ff\PPS-Tools\auftraege2000_neu_1_Material-Eingang.xls"
' Entfernen des Schreibschutzes
SetAttr filePath, vbNormal
' Speichern der Datei
ActiveWorkbook.SaveAs Filename:=filePath, FileFormat:=xlNormal
End Sub
Tipps für Profis
-
Fehlerprotokollierung: Implementiere eine Fehlerprotokollierung, um festzustellen, wo dein Makro möglicherweise versagt. Nutze On Error GoTo
für eine detailliertere Fehlermeldung.
-
Verwende Variablen: Anstatt Dateipfade hartkodiert im Makro zu verwenden, speichere sie in Variablen, um die Wartung des Codes zu erleichtern.
FAQ: Häufige Fragen
1. Wie speichere ich eine schreibgeschützte Datei unter einem neuen Namen?
Um eine schreibgeschützte Datei unter einem neuen Namen zu speichern, nutze die SaveAs
-Methode und stelle sicher, dass du einen anderen Dateinamen angibst.
2. Wie kann ich vermeiden, beim Löschen von Excel-Blättern gefragt zu werden?
Füge Application.DisplayAlerts = False
vor dem Löschvorgang hinzu, um die Bestätigungsdialoge zu unterdrücken. Stelle sicher, dass du sie nach dem Vorgang wieder aktivierst.