Speichern mit SaveCopyAs in Excel VBA
Schritt-für-Schritt-Anleitung
Um eine Excel-Datei sowohl am aktuellen Ort als auch auf einem Server zu speichern, kannst du das SaveCopyAs-Kommando in VBA verwenden. Hier ist eine einfache Anleitung:
-
Öffne den Visual Basic-Editor: Drücke ALT + F11 in Excel.
-
Füge ein neues Modul hinzu: Gehe auf Einfügen > Modul.
-
Kopiere den folgenden Code:
Sub SpeichernMitKopie()
Dim Datname As String
' Datei an aktuellem Ort speichern
ActiveWorkbook.Save
' Pfad zur Serverdatei festlegen
Datname = "http://deinserver/pfad/zur/datei"
' Datei auf dem Server speichern
ActiveWorkbook.SaveCopyAs Filename:=Datname & ".xls", FileFormat:=xlNormal
End Sub
-
Ändere den Dateipfad: Ersetze http://deinserver/pfad/zur/datei mit dem gewünschten Pfad.
-
Führe das Makro aus: Klicke auf F5 oder gehe zurück zu Excel und führe das Makro aus.
Häufige Fehler und Lösungen
-
Fehler: "Das angegebene Dateiformat ist ungültig"
- Lösung: Stelle sicher, dass du das richtige
FileFormat verwendest. Zum Beispiel: FileFormat:=xlNormal für .xls oder FileFormat:=xlOpenXMLWorkbook für .xlsx.
-
Fehler: "Datei kann nicht gespeichert werden"
- Lösung: Überprüfe die Berechtigungen für den Zielordner oder Server. Du benötigst Schreibzugriff.
-
Fehler: Aktive Arbeitsmappe wird überschrieben
- Lösung: Verwende
ActiveWorkbook.SaveCopyAs anstelle von ActiveWorkbook.SaveAs, um die aktuelle Datei nicht zu überschreiben.
Alternative Methoden
Es gibt verschiedene Wege, Dateien in Excel VBA zu speichern:
-
Verwenden von ThisWorkbook.SaveCopyAs:
ThisWorkbook.SaveCopyAs "C:\Pfad\zu\deiner\Datei.xlsx"
-
Kombination von Save und SaveCopyAs:
ActiveWorkbook.Save
ActiveWorkbook.SaveCopyAs "C:\Pfad\zu\deiner\Kopie.xlsx"
Diese Methoden ermöglichen es dir, Kopien der Arbeitsmappe an verschiedenen Orten zu speichern.
Praktische Beispiele
Hier sind einige praktische Beispiele, wie du das SaveCopyAs verwenden kannst:
-
Speichern mit Datum und Uhrzeit:
Sub SpeichernMitDatum()
Dim myPath As String
Dim myNewName As String
myPath = ActiveWorkbook.Path & "\"
myNewName = myPath & "Backup_" & Format(Now, "yyyy-mm-dd_hh-mm") & ".xls"
ActiveWorkbook.Save
ActiveWorkbook.SaveCopyAs myNewName
End Sub
-
Speichern auf einem Server:
Sub SpeichernAufServer()
Dim serverPath As String
serverPath = "http://deinserver/pfad/zur/datei"
ActiveWorkbook.SaveCopyAs serverPath & "\Backup_" & Format(Date, "yyyy-mm-dd") & ".xls"
End Sub
Tipps für Profis
-
Verwende Application.DisplayAlerts = False um Warnmeldungen beim Überschreiben von Dateien zu vermeiden.
-
Speichere regelmäßig Sicherungskopien: Entwickle eine Routine, um Sicherungsdateien zu erstellen, insbesondere vor größeren Änderungen.
-
Teste deine Makros in einer Testumgebung, bevor du sie in produktiven Umgebungen einsetzt.
FAQ: Häufige Fragen
1. Was ist der Unterschied zwischen SaveCopyAs und SaveAs?
SaveCopyAs erstellt eine Kopie der Arbeitsmappe und lässt die aktuelle Arbeitsmappe unverändert. SaveAs speichert die Arbeitsmappe unter einem neuen Namen und kann die aktuelle Datei überschreiben.
2. Kann ich SaveCopyAs verwenden, um im .xlsx-Format zu speichern?
Ja, du kannst SaveCopyAs verwenden, um im .xlsx-Format zu speichern, indem du das FileFormat entsprechend anpasst: FileFormat:=xlOpenXMLWorkbook.
3. Wie kann ich den Dateipfad dynamisch anpassen?
Verwende ActiveWorkbook.Path, um den aktuellen Pfad der Arbeitsmappe zu erhalten, und kombiniere ihn mit dem Dateinamen, um dynamische Pfade zu erstellen.