Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA - Speichern nur als *.xlsm erlauben

VBA - Speichern nur als *.xlsm erlauben
07.08.2015 08:42:12
Cosmo
Liebe Community,
ich hoffe mir kann geholfen werden:
Ich möchte, dass man eine Arbeitsmappe ausschließlich als *.xlsm abspeichern kann.
Also entweder kann man im Speichern unter Befehl nur noch "Arbeitsmappe mit Makros" auswählen oder man graut den Speichern und Speichern unter Befehl aus und baut eine Schaltfläche ein, die bei Klick die Arbeitsmappe als *.xlsm abspeichert (in einen Ordner den man dann auswählen kann).
Ist das möglich, so wie ich mir es vorstelle?
Vielleicht noch kurz der Sinn dahinter: Das Excel funktioniert nur mit Makros, wenn ich dass aber an Kunden verschicke speichern sie es oft einfach als *.xlsx ab und schicken es ausgefüllt zurück - dann darf ich die Makros wieder reinmachen, und zwar in jedes einzelne Excel :-/

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Speichern nur als *.xlsm erlauben
07.08.2015 08:48:09
Rudi
Hallo,
schlechte Karten.
Was ist bei deaktivierten Makros? Das ist bei uns Standard, wenn eine .xlsm aus einer Email heraus geöffnet wird.
Gruß
Rudi

AW: VBA - Speichern nur als *.xlsm erlauben
07.08.2015 09:01:55
Daniel
Hi
du kannst das SAVEAS im BeforeSave-Event der Datei abfangen.
dort programmiest du dann die SpeichernUnter-Sequenz nach, dh du fragst den Dateinamen ab, prüft ob die Datei bereits besteht und wenn ja, fragst du nach, ob sie überschrieben werden soll usw.
beim Speichern verwendest du dann den eingegebenen Dateinamen, aber du stellst das Dateiformat fest ein.
dazu folgenender Code ins Modul "Diese Arbeitsmappe"
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim Datei As Variant
If SaveAsUI Then
Cancel = True
Do
Datei = Application.GetSaveAsFilename
If VarType(Datei)  vbString Then Exit Do
Datei = Left(Datei, InStrRev(Datei, ".")) & "xlsm"
If Dir(Datei)  "" Then
Select Case MsgBox("Datei existiert schon, überschreiben?", vbQuestion +  _
vbYesNoCancel)
Case vbYes
Kill Datei
Me.SaveAs Datei, xlOpenXMLWorkbookMacroEnabled
Exit Do
Case vbNo
Case vbCancel
Exit Do
End Select
Else
Me.SaveAs Datei, xlOpenXMLWorkbookMacroEnabled
Exit Do
End If
Loop
End If
End Sub
Gruß Daniel

Anzeige
AW: VBA - Speichern nur als *.xlsm erlauben
07.08.2015 14:12:07
Cosmo
Verdammt Daniel, das ist gut!
Danke dir vielmals!

AW: VBA - Speichern nur als *.xlsm erlauben
07.08.2015 09:39:03
Daniel
Hi
dann schreibe dir doch eine Vorlagendatei, welche die notwendigen Makros enthält und zusätzlich ein Makro, welches die Daten aus den zurückgeschickten Dateinen in die Vorlagendatei kopiert und diese dann erneut speichert.
Dann musst du nicht die makros einzeln ergänzen.
Gruß Daniel
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Speichern von Excel-Arbeitsmappen ausschließlich im .xlsm-Format


Schritt-für-Schritt-Anleitung

Um sicherzustellen, dass eine Excel-Arbeitsmappe nur im .xlsm-Format gespeichert werden kann, kannst Du den folgenden VBA-Code verwenden. Dieser Code wird im Workbook_BeforeSave-Ereignis platziert:

  1. Öffne Deine Excel-Datei und drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.
  2. Wähle im Projekt-Explorer links die Arbeitsmappe aus, in der Du den Code einfügen möchtest.
  3. Doppelklicke auf "Diese Arbeitsmappe" (ThisWorkbook).
  4. Füge den folgenden Code in das Codefenster ein:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Dim Datei As Variant
    If SaveAsUI Then
        Cancel = True
        Do
            Datei = Application.GetSaveAsFilename
            If VarType(Datei) <> vbString Then Exit Do
            Datei = Left(Datei, InStrRev(Datei, ".")) & "xlsm"
            If Dir(Datei) <> "" Then
                Select Case MsgBox("Datei existiert schon, überschreiben?", vbQuestion + vbYesNoCancel)
                    Case vbYes
                        Kill Datei
                        Me.SaveAs Datei, xlOpenXMLWorkbookMacroEnabled
                        Exit Do
                    Case vbNo
                    Case vbCancel
                        Exit Do
                End Select
            Else
                Me.SaveAs Datei, xlOpenXMLWorkbookMacroEnabled
                Exit Do
            End If
        Loop
    End If
End Sub
  1. Speichere Deine Änderungen und schließe den VBA-Editor.

Jetzt wird beim Speichern der Arbeitsmappe nur das .xlsm-Format akzeptiert.


Häufige Fehler und Lösungen

  • Fehler: Excel erlaubt das Speichern im .xlsx-Format.

    • Lösung: Stelle sicher, dass der Code korrekt im Workbook_BeforeSave-Ereignis eingefügt wurde und keine Syntaxfehler vorhanden sind.
  • Fehler: Makros sind deaktiviert.

    • Lösung: Stelle sicher, dass die Makros in den Excel-Optionen aktiviert sind, um den Code auszuführen.

Alternative Methoden

Eine alternative Methode, um sicherzustellen, dass eine Excel-Arbeitsmappe nur als .xlsm gespeichert werden kann, besteht darin, eine Schaltfläche zu erstellen, die das Speichern auslöst. Du kannst ein Makro an diese Schaltfläche binden, das denselben Code wie oben verwendet. Dies kann die Benutzerfreundlichkeit erhöhen, da die Benutzer nicht den Speichern-Dialog verwenden müssen.


Praktische Beispiele

Wenn Du einen Workflow hast, in dem Du oft Daten von Kunden zurückerhältst, könntest Du auch überlegen, ein zusätzliches Makro zu schreiben, das die zurückgesendeten Daten automatisch in eine Vorlage überträgt und diese dann als .xlsm speichert. Dies spart Zeit und reduziert die Fehleranfälligkeit.


Tipps für Profis

  • Nutze die Möglichkeit, .xlsm in PDF umzuwandeln, um Daten sicher zu teilen, ohne dass der Empfänger die Makros ausführen kann.
  • Halte den VBA-Code gut dokumentiert, um es einfacher zu machen, ihn später zu warten oder anzupassen.
  • Überlege, die Benutzeroberfläche weiter anzupassen, um den Prozess für Endbenutzer so einfach wie möglich zu gestalten.

FAQ: Häufige Fragen

1. Wie kann ich die Arbeitsmappe in ein .xlsm-Format umwandeln, wenn sie bereits im .xlsx-Format gespeichert wurde? Du kannst das .xlsx-Dokument öffnen und dann "Speichern unter" wählen und das Format auf .xlsm ändern.

2. Was passiert, wenn ich eine .xlsm-Datei mit deaktivierten Makros öffne? Wenn Makros deaktiviert sind, wird der VBA-Code, der das Speichern steuert, nicht ausgeführt. Benutzer müssen die Makros aktivieren, um die Speichereinstellungen zu nutzen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige