xlsm in xlsx umwandeln: So geht's mit VBA
Schritt-für-Schritt-Anleitung
Um eine Excel-Datei im xlsm-Format als xlsx zu speichern, kannst Du den folgenden VBA-Code verwenden. Dieser Code speichert die Datei unter einem neuen Namen, ohne Makros:
Private Sub UserForm_Terminate()
Dim sichdatei As String
Dim pfad As String
Sheets("Tabelle1").Copy
sichdatei = "Sicherungskopie_Datenbank.xlsx"
pfad = ThisWorkbook.Path
ActiveWorkbook.SaveAs pfad & "\" & sichdatei, FileFormat:=xlOpenXMLWorkbook
ActiveWorkbook.Close SaveChanges:=True
End Sub
Hierbei wird das aktive Arbeitsblatt kopiert und unter dem Namen "Sicherungskopie_Datenbank.xlsx" im Pfad der aktuellen Arbeitsmappe gespeichert. Achte darauf, dass Du das FileFormat
korrekt angibst, um die Datei im xlsx-Format zu speichern.
Häufige Fehler und Lösungen
Ein häufiger Fehler, der bei der Verwendung von ActiveWorkbook.SaveAs
auftreten kann, ist, dass eine Speicherabfrage erscheint, wenn Du eine UserForm mit Unload Me
schließt. Um dies zu vermeiden, kannst Du UserForm.Hide
verwenden. Beachte jedoch, dass dies dazu führen kann, dass bestimmte Funktionen, wie das Sortieren einer ListBox, nicht wie gewünscht funktionieren.
Lösung: Erstelle einen separaten Button zum Speichern, um die Speicherung zu steuern, ohne die UserForm zu schließen.
Alternative Methoden
Eine Alternative zur Verwendung von ActiveWorkbook.SaveAs
ist die Verwendung des SaveCopyAs
-Befehls. Dieser Befehl erstellt eine Kopie der Datei im gewünschten Format, ohne die aktuelle Arbeitsmappe zu schließen:
ThisWorkbook.SaveCopyAs ThisWorkbook.Path & "\Sicherungskopie_Datenbank.xlsx"
Diese Methode ist nützlich, wenn Du die aktuelle Arbeitsmappe weiterhin bearbeiten möchtest.
Praktische Beispiele
Ein einfaches Beispiel zur Umwandlung einer xlsm-Datei in xlsx könnte so aussehen:
- Du hast eine UserForm mit einem Button, der die Umwandlung auslöst.
- Der Code im Button könnte folgendermaßen aussehen:
Private Sub cmdSave_Click()
Dim pfad As String
pfad = ThisWorkbook.Path & "\NeueDatei.xlsx"
ThisWorkbook.SaveCopyAs pfad
MsgBox "Datei erfolgreich als xlsx gespeichert!"
End Sub
Wenn Du diesen Button klickst, wird die Datei im xlsx-Format gespeichert, und Du erhältst eine Bestätigungsmeldung.
Tipps für Profis
- Nutze
Application.DisplayAlerts = False
, um störende Bestätigungsdialoge während der Speicherung zu unterdrücken.
- Stelle sicher, dass Du immer das richtige
FileFormat
angibst, wenn Du eine Datei speicherst. Für xlsx ist das xlOpenXMLWorkbook
.
- Überlege, ob Du eine Sicherungskopie der Originaldatei benötigst, bevor Du mit dem Speichern beginnst.
FAQ: Häufige Fragen
1. Was ist der Unterschied zwischen xlsm und xlsx?
XLSM-Dateien können Makros enthalten, während XLSX-Dateien keine Makros unterstützen. Wenn Du eine xlsm-Datei in xlsx umwandelst, werden alle Makros entfernt.
2. Wie kann ich sicherstellen, dass meine UserForms ordnungsgemäß funktionieren, wenn ich die Datei speichere?
Verwende UserForm.Hide
, um die UserForm nicht zu entladen, und implementiere einen Speichern-Button, um die Speicherung zu steuern. So verhinderst Du unerwünschte Speicherabfragen.
3. Kann ich auch andere Dateiformate speichern?
Ja, Du kannst andere Formate wie CSV oder TXT speichern, indem Du das entsprechende FileFormat
in der SaveAs
-Methode angibst.