xlsm als xlsx speichern und alle Makros entfernen
Schritt-für-Schritt-Anleitung
Um eine .xlsm-Datei in eine .xlsx-Datei zu speichern und dabei alle Makros zu entfernen, kannst Du folgendes VBA-Makro verwenden:
Option Explicit
Sub SpeichereOhneMakros()
Dim Ordner As Variant
Dim strPath As String
Dim FN As String
Dim fDialog As FileDialog
' Schritt 1: Aktuelle Datei speichern
ActiveWorkbook.Save
' Schritt 2: Speicherort auswählen
Set fDialog = Application.FileDialog(msoFileDialogFolderPicker)
With fDialog
.Title = "Bitte das entsprechende Unterverzeichnis auswählen!"
.InitialFileName = "D:\Projekte\Auswertungen"
If .Show = -1 Then
For Each Ordner In .SelectedItems
strPath = Ordner
Next
Else
Exit Sub
End If
End With
' Schritt 3: Dateinamen generieren
With ActiveSheet
FN = .Range("A2").Value & "_" & ActiveSheet.Name & ".xlsx"
End With
' Schritt 4: Datei als xlsx speichern
If Right(strPath, 1) <> "\" Then strPath = strPath & "\"
ActiveWorkbook.Sheets.Copy
ActiveWorkbook.SaveAs Filename:=strPath & FN, FileFormat:=51
ActiveWorkbook.Close
' Schritt 5: Ursprüngliche Datei schließen ohne Änderungen
ThisWorkbook.Close savechanges:=False
End Sub
Dieses Makro führt die notwendigen Schritte aus, um Deine .xlsm-Datei in eine .xlsx-Datei zu speichern, während alle Makros entfernt werden.
Häufige Fehler und Lösungen
-
Fehler: Beim Speichern als .xls bleibt das Makro erhalten.
- Lösung: Stelle sicher, dass Du die Datei als
.xlsx speicherst, da nur in diesem Format die Makros entfernt werden.
-
Fehler: Fehlermeldung beim Öffnen der Datei, dass das Dateiformat nicht mit der Dateierweiterung übereinstimmt.
- Lösung: Verwende die richtige
FileFormat-Einstellung im SaveAs-Befehl.
Alternative Methoden
- Makrorecorder verwenden: Du kannst den Makrorecorder aktivieren, um die Schritte zum Speichern ohne Makros aufzuzeichnen.
- Manuelles Kopieren: Kopiere die Daten manuell in eine neue
.xlsx-Datei und speichere sie dort. Dies funktioniert, wenn Du keine großen Datenmengen hast.
Praktische Beispiele
Hier ist ein einfaches Beispiel, wie Du das Makro anpassen kannst:
- Beispiel 1: Du möchtest nur bestimmte Tabellen speichern. Ändere den Code in der Zeile, die die Blätter kopiert:
Sheets(Array("Tabelle1", "Tabelle3")).Copy
- Beispiel 2: Um eine
.xlsm-Datei in eine .pdf-Datei zu konvertieren, kannst Du den ExportAsFixedFormat-Befehl verwenden.
Tipps für Profis
- Verwende
Application.DisplayAlerts = False, um Warnmeldungen beim Schließen von Dateien zu unterdrücken.
- Nutze
Debug.Print im Code, um den Fortschritt oder mögliche Fehler zu verfolgen.
FAQ: Häufige Fragen
1. Wie entferne ich alle Makros aus einer Excel-Datei?
Du kannst alle Makros entfernen, indem Du die Datei im .xlsx-Format speicherst, da in diesem Format keine Makros unterstützt werden.
2. Kann ich .xlsm-Dateien direkt als .xls speichern?
Ja, aber sei vorsichtig, da die .xls-Dateien ebenfalls Makros unterstützen. Am besten speichere sie als .xlsx, um sicherzustellen, dass die Makros entfernt werden.