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.