Speichern unter und Schließen per Macro in Excel
Schritt-für-Schritt-Anleitung
Um eine Excel-Datei per Macro zu speichern und anschließend zu schließen, kannst Du den folgenden VBA-Code verwenden:
Sub Speichern()
Dim strPfad As String
Dim strDatei As String
strPfad = IIf(Right$(ThisWorkbook.Path, 1) = "\", ThisWorkbook.Path, ThisWorkbook.Path & "\")
strDatei = Format(Range("C1"), "dd_mm_yyyy")
ThisWorkbook.SaveCopyAs strPfad & strDatei
ThisWorkbook.Close SaveChanges:=False ' Hier wird die Datei geschlossen
End Sub
Hinweise:
- Du kannst den Code in einen CommandButton einfügen.
- Der Pfad, in dem die Datei gespeichert wird, kann nach Bedarf angepasst werden, z. B.
strPfad = "C:\Eigene Dateien\"
.
Häufige Fehler und Lösungen
-
Fehler beim Speichern:
- Wenn der Pfad nicht existiert oder falsch eingegeben wurde, kann es beim Speichern zu Fehlern kommen. Stelle sicher, dass der Pfad korrekt ist.
-
Datei schließt nicht:
- Überprüfe, ob der
ThisWorkbook.Close
Befehl korrekt implementiert ist. Dieser muss nach dem Speichern aufgerufen werden.
-
Excel beim Schließen nach Speichern fragen:
- Um zu verhindern, dass Excel beim Schließen nach Änderungen fragt, stelle sicher, dass
SaveChanges:=False
verwendet wird.
Alternative Methoden
Es gibt auch alternative Methoden, um eine Excel-Datei zu speichern und zu schließen. Eine Möglichkeit ist die Verwendung des ActiveWorkbook
-Objekts, um die aktuelle Arbeitsmappe zu speichern:
Sub Blattspeichern()
Dim strDatei As String
strDatei = Format(Range("C1"), "dd_mm_yyyy")
ActiveSheet.Copy
ActiveWorkbook.SaveAs Filename:="D:\Eigene Dateien\" & strDatei & ".xls"
ActiveWorkbook.Close ' schließen
End Sub
In diesem Beispiel wird das aktive Blatt kopiert und unter dem Datum aus Zelle C1 gespeichert.
Praktische Beispiele
- Speichern unter einem bestimmten Namen:
- Um die Datei unter einem Namen zu speichern, der aus einer Zelle stammt, kannst Du den Code wie folgt anpassen:
Sub SpeichernUnter()
Dim strDatei As String
strDatei = Range("C1").Value ' Hier wird der Name aus Zelle C1 übernommen
ThisWorkbook.SaveCopyAs "C:\Eigene Dateien\" & strDatei & ".xls"
ThisWorkbook.Close
End Sub
- Speichern und Schließen einer spezifischen Datei:
- Um eine spezifische Datei zu schließen und eine neue zu speichern:
Sub SpeichernUndSchließen()
Dim strDatei As String
strDatei = Format(Range("C1"), "dd_mm_yyyy")
ThisWorkbook.SaveCopyAs "C:\Eigene Dateien\" & strDatei & ".xls"
Application.Workbooks("meine Daten").Close SaveChanges:=False ' Schließt die Ursprungsdatei
End Sub
Tipps für Profis
- Fehlerbehandlung: Implementiere Fehlerbehandlungsroutinen, um unerwartete Abstürze zu vermeiden.
On Error Resume Next
' Dein Code hier
If Err.Number <> 0 Then
MsgBox "Fehler: " & Err.Description
End If
- Automatisierung: Nutze
Workbook_Open
oder Workbook_BeforeClose
, um automatisierte Speicher- und Schließvorgänge zu steuern.
FAQ: Häufige Fragen
1. Wie kann ich Excel beim Schließen nach dem Speichern fragen?
Um Excel beim Schließen nach dem Speichern zu fragen, kannst Du den ThisWorkbook.Close SaveChanges:=True
Befehl verwenden.
2. Was ist der Unterschied zwischen SaveCopyAs
und SaveAs
?
SaveCopyAs
erstellt eine Kopie der Arbeitsmappe, während SaveAs
die aktuelle Arbeitsmappe unter einem neuen Namen speichert.