ActiveWorkbook.SaveAs und FileFormat in Excel VBA
Schritt-für-Schritt-Anleitung
Um eine Arbeitsmappe in Excel mit VBA zu speichern, kannst du die ActiveWorkbook.SaveAs
Methode verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:
-
Öffne den VBA-Editor: Drücke ALT + F11
, um den VBA-Editor zu starten.
-
Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)" und wähle Einfügen -> Modul
.
-
Gib den folgenden Code ein:
Sub SpeichernAls()
Dim Dateiname As String
Dateiname = "C:\Temp\SAuf_Dat.xls"
ActiveWorkbook.SaveAs Filename:=Dateiname, FileFormat:=xlExcel5
End Sub
-
Ändere das FileFormat
: Wenn du die Datei in einem anderen Format speichern möchtest, ändere FileFormat:=xlExcel5
in das gewünschte Format (z.B. xlOpenXMLWorkbook
für .xlsx).
-
Führe das Makro aus: Drücke F5
, um das Makro auszuführen.
Häufige Fehler und Lösungen
-
Problem: Zellen sind nach dem Speichern nicht mehr verbunden und zeigen Rauten an.
- Lösung: Verwende
FileFormat:=xlExcel7
, um die verbundenen Zellen zu erhalten, aber beachte, dass dabei die Makros gespeichert werden. Alternativ kannst du xlOpenXMLWorkbook
verwenden, um die Datei im .xlsx-Format zu speichern.
-
Problem: Beim Speichern fragt Excel, ob du die Datei überschreiben möchtest.
- Lösung: Du kannst das Makro so anpassen, dass es keine weiteren Speicherungsvorgänge ausführt. Füge eine Bedingung hinzu, um das erneute Speichern zu vermeiden.
Alternative Methoden
Wenn du die ActiveWorkbook.SaveAs
Methode nicht verwenden möchtest, gibt es auch andere Möglichkeiten:
-
ThisWorkbook.SaveAs: Speichert die aktuelle Arbeitsmappe, aber du kannst die Dateinamen und Formate ebenfalls anpassen.
ThisWorkbook.SaveAs Filename:="C:\Temp\MeineDatei.xlsx", FileFormat:=xlOpenXMLWorkbook
-
Application.ActiveWorkbook.Save: Speichert die Arbeitsmappe ohne Änderungen an Dateinamen oder Format.
Praktische Beispiele
Hier sind einige praktische Beispiele, die dir helfen können, ActiveWorkbook.SaveAs
effektiver zu nutzen:
-
Speichern im xlsx-Format:
Sub SpeichernAlsXLSX()
ActiveWorkbook.SaveAs Filename:="C:\Temp\SAuf_Dat.xlsx", FileFormat:=xlOpenXMLWorkbook
End Sub
-
Speichern ohne Makros:
Sub SpeichernOhneMakros()
ActiveWorkbook.SaveAs Filename:="C:\Temp\SAuf_Dat.xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled
End Sub
Tipps für Profis
-
Verwende Variablen für Dateipfade: Um den Code flexibler zu gestalten, speichere den Dateipfad in einer Variablen.
Dim Pfad As String
Pfad = "C:\Temp\"
ActiveWorkbook.SaveAs Filename:=Pfad & "SAuf_Dat.xls", FileFormat:=xlExcel5
-
Fehlerbehandlung einfügen: Füge eine Fehlerbehandlung hinzu, um Probleme beim Speichern abzufangen.
On Error GoTo Fehlerbehandlung
ActiveWorkbook.SaveAs Filename:="C:\Temp\SAuf_Dat.xls", FileFormat:=xlExcel5
Exit Sub
Fehlerbehandlung:
MsgBox "Fehler beim Speichern: " & Err.Description
FAQ: Häufige Fragen
1. Was ist der Unterschied zwischen SaveAs
und Save
?
SaveAs
speichert die Arbeitsmappe unter einem neuen Dateinamen oder Format, während Save
die aktuelle Datei speichert, ohne den Namen zu ändern.
2. Wie verhindere ich, dass Makros beim Speichern mit gespeichert werden?
Verwende das Format xlOpenXMLWorkbook
, um sicherzustellen, dass keine Makros in die gespeicherte Datei übernommen werden.
3. Wie kann ich die Dateiformate für SaveAs
herausfinden?
Du kannst die verschiedenen FileFormat
Konstanten in der Excel VBA-Dokumentation nachschlagen oder im VBA-Editor xl
gefolgt von der Tabulatortaste verwenden, um Vorschläge zu erhalten.
4. Was passiert, wenn ich ein nicht unterstütztes Format wähle?
Excel gibt eine Fehlermeldung aus, wenn das gewählte Format nicht mit der Datei kompatibel ist.