Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Makro: speichern als .xlsm

Makro: speichern als .xlsm
11.05.2017 13:00:28
Max
Hallo,
nachstehendes Makro habe ich seinerzeit mit Hilfe des Forums erhalten und es hat
bis heute auch problemlos funktioniert:
Sub SaveAs_Rechnung()
Dim Pfad$, Datei$, Filter$, Endg$, File
Pfad = "C:\Rechnung\"
Datei = ActiveSheet.Range("J8")
If Datei = "" Then
MsgBox "Ohne Vor- u. Zuname ist kein Speichern möglich", vbExclamation
Exit Sub
End If
Endg = ".xlsm"
If InStr(Datei, Endg) = 0 Then
Datei = Datei & Endg
End If
Filter = "Excel Files (*" & Endg & "), *" & Endg
File = Application.GetSaveAsFilename(Pfad & Datei, Filter)
If File  False Then ActiveWorkbook.SaveAs Filename:=File
End Sub

Der "Speichern unter"-Dialog erscheint zwar korrekt mit Datei-/ Kundennamen und Dateiformat .xlsm. Als Dateityp wird "Excel Files (*.xlsm) angezeigt, im Dialog wäre auch keine andere Auswahl möglich.
Klickt man auf "Speichern", meldet Excel leider, daß mit Makros nicht gespeichert werden kann(?):
Userbild
Wie kann das Makro geändert werden, damit ein Speichern als .xlsm wieder funktioniert?
Für eure Mühe vorab schon mal recht herzlichen Dank!
Viele Grüße
Max
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro: speichern als .xlsm
11.05.2017 13:07:38
Daniel
Hi
seit Excel 2007 gibt es nicht mehr nur ein Excelstandardformat, sondern vier: xlsx, xlsm, xlsb, und xls.
daher muss ab dieser Version beim SaveAs das FileFormat immer mit angegeben werden:
Activeworkbook.SaveAs FileName:=File, FileFormat:=xlOpenXMLWorkbookMacroEnabled
den Dateinamen sollte man ohne Dateierweiterung angeben (das hat sowieso keinen Einfluss auf das Dateiformat).
Die Dateierweiterung wird automatisch vergeben, passend zum gewählten FileFormat.
Gruß Daniel
Anzeige
Erledigt: speichern als .xlsm
11.05.2017 14:23:50
Max
Hallo Daniel,
recht herzlichen Dank für die Lösung! Es funktioniert wieder wie es soll...;-))
Viele Grüße
Max
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Makro zum Speichern als .xlsm in Excel


Schritt-für-Schritt-Anleitung

Um ein Excel-Makro zu erstellen, das eine Datei im .xlsm-Format speichert, kannst du folgendes VBA-Skript verwenden:

Sub SaveAs_Rechnung()
    Dim Pfad As String, Datei As String, Filter As String, Endg As String, File As Variant
    Pfad = "C:\Rechnung\"
    Datei = ActiveSheet.Range("J8").Value
    If Datei = "" Then
        MsgBox "Ohne Vor- u. Zuname ist kein Speichern möglich", vbExclamation
        Exit Sub
    End If
    Endg = ".xlsm"
    If InStr(Datei, Endg) = 0 Then
        Datei = Datei & Endg
    End If
    Filter = "Excel Files (*" & Endg & "), *" & Endg
    File = Application.GetSaveAsFilename(Pfad & Datei, Filter)
    If File <> False Then ActiveWorkbook.SaveAs Filename:=File, FileFormat:=xlOpenXMLWorkbookMacroEnabled
End Sub

In diesem Code wird der Benutzer aufgefordert, einen Dateinamen einzugeben, und die Datei wird im .xlsm-Format gespeichert. Achte darauf, dass du die FileFormat-Option angibst, um sicherzustellen, dass die Datei korrekt gespeichert wird.


Häufige Fehler und Lösungen

Ein häufiger Fehler beim Speichern einer .xlsm-Datei ist die Fehlermeldung, dass "mit Makros nicht gespeichert werden kann". Dies kann auftreten, wenn das FileFormat nicht korrekt angegeben wurde. Um dies zu beheben, stelle sicher, dass du den folgenden Code verwendest:

ActiveWorkbook.SaveAs Filename:=File, FileFormat:=xlOpenXMLWorkbookMacroEnabled

Überprüfe auch, ob der Dateiname korrekt eingegeben wurde und keine ungültigen Zeichen enthält.


Alternative Methoden

Neben der Verwendung von VBA gibt es auch die Möglichkeit, Excel-Dateien manuell im .xlsm-Format zu speichern. Gehe dazu einfach zu:

  1. Datei > Speichern unter
  2. Wähle den Speicherort aus und gib den Dateinamen ein.
  3. Wähle im Dropdown-Menü unter "Dateityp" die Option *Excel-Arbeitsmappe mit Makros (.xlsm)** aus.

Praktische Beispiele

Wenn du den oben genannten VBA-Code in deinem Excel-Dokument implementierst, kannst du ihn anpassen, um verschiedene Dateipfade oder -namen zu verwenden. Beispiel:

Pfad = "C:\DeineDateien\"

Ersetze den Pfad entsprechend deinem System, um die Datei an einem gewünschten Ort zu speichern.


Tipps für Profis

  • Verwende die FileDialog-Methode, um dem Benutzer eine benutzerfreundliche Auswahlmöglichkeit für den Speicherort zu bieten.
  • Teste dein Makro in einer sicheren Umgebung, um sicherzustellen, dass alles korrekt funktioniert, bevor du es in einem produktiven Umfeld verwendest.
  • Dokumentiere deinen Code gut, um anderen (oder dir selbst in der Zukunft) das Verständnis zu erleichtern.

FAQ: Häufige Fragen

1. Wie kann ich das Makro anpassen, um in ein anderes Format zu speichern? Du kannst das FileFormat-Argument im SaveAs-Befehl ändern, z.B. FileFormat:=xlWorkbookDefault für .xlsx.

2. Was ist der Unterschied zwischen .xlsm und .xlsx? Die .xlsm-Datei unterstützt Makros, während .xlsx-Dateien keine Makros enthalten können. Wenn du ein Makro verwenden möchtest, musst du im .xlsm-Format speichern.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige