Mit VBA den "Speichern unter"-Dateityp vorbelegen
Schritt-für-Schritt-Anleitung
-
Öffne deine Excel-Datei. Stelle sicher, dass du in einer Office 2010 Umgebung arbeitest.
-
Drücke ALT + F11, um den VBA-Editor zu öffnen.
-
Füge den folgenden Code in das ThisWorkbook-Modul ein:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim varWorkbookName As String
Dim vartyp As Integer
Application.EnableEvents = False
If SaveAsUI = True Then
varWorkbookName = Application.GetSaveAsFilename( _
fileFilter:="Excel Macro Enabled Workbook (*.xlsm), *.xlsm, Excel Macro Enabled Template (*.xltm), *.xltm")
Cancel = True
If varWorkbookName <> "Falsch" Then
If Application.Version > 11 Then
If Right(varWorkbookName, 4) = "xlsm" Then
vartyp = xlOpenXMLWorkbookMacroEnabled
Else
vartyp = xlOpenXMLTemplateMacroEnabled
End If
ActiveWorkbook.SaveAs Filename:=varWorkbookName, FileFormat:=vartyp
End If
End If
End If
Application.EnableEvents = True
End Sub
-
Speichere den VBA-Code. Schließe den VBA-Editor und teste die Funktion.
Häufige Fehler und Lösungen
Alternative Methoden
Eine alternative Methode wäre, den Dateityp direkt im Save As Dialog anzugeben, ohne VBA zu nutzen. Du kannst die Dateitypen manuell auswählen, aber das erfordert mehr Benutzerinteraktion, was die Effizienz verringert.
Wenn du trotzdem VBA verwenden möchtest, aber ohne das Workbook_BeforeSave-Ereignis, könntest du eine separate Schaltfläche erstellen, die die Datei mit dem gewünschten Dateityp speichert.
Praktische Beispiele
Hier ist ein Beispiel für die Verwendung von FileFormat und Save As VBA:
Sub SpeichernAlsVorlage()
Dim varWorkbookName As String
varWorkbookName = Application.GetSaveAsFilename( _
fileFilter:="Excel Macro Enabled Template (*.xltm), *.xltm")
If varWorkbookName <> "Falsch" Then
ActiveWorkbook.SaveAs Filename:=varWorkbookName, FileFormat:=xlOpenXMLTemplateMacroEnabled
End If
End Sub
Dieses Beispiel zeigt, wie du den Excel-Dateityp gezielt auf .xltm setzen kannst, um eine Vorlage zu speichern.
Tipps für Profis
-
Verwende xl-Bezeichner anstelle von numerischen Werten, um deinen Code leserlicher und zukunftssicherer zu gestalten.
-
Integriere eine Fehlerbehandlung, um Probleme beim Speichern abzufangen. Zum Beispiel:
On Error GoTo ErrorHandler
' Dein Code hier
Exit Sub
ErrorHandler:
MsgBox "Fehler: " & Err.Description
-
Teste deinen Code gründlich in verschiedenen Szenarien, um sicherzustellen, dass der filterindex VBA korrekt funktioniert.
FAQ: Häufige Fragen
1. Warum sollte ich xl-Bezeichner verwenden?
Die Verwendung von xl-Bezeichnern macht den Code lesbarer und schützt vor Änderungen in zukünftigen Excel-Versionen, da die numerischen Werte möglicherweise nicht mehr gültig sind.
2. Was ist der Zweck von Application.EnableEvents?
Application.EnableEvents verhindert, dass dein Code in eine Endlosschleife gerät, indem es sicherstellt, dass Ereignisse nicht rekursiv ausgelöst werden, während du speicherst.
3. Wie kann ich den Dateityp ändern, den ich speichern möchte?
Ändere einfach die FileFormat-Zuweisung in deinem VBA-Code entsprechend dem gewünschten Excel-Dateityp.