VBA - Speichern nur als *.xlsm erlauben

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: VBA - Speichern nur als *.xlsm erlauben
von: Cosmo
Geschrieben am: 07.08.2015 08:42:12

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 :-/

Bild

Betrifft: AW: VBA - Speichern nur als *.xlsm erlauben
von: Rudi Maintaire
Geschrieben am: 07.08.2015 08:48:09
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

Bild

Betrifft: AW: VBA - Speichern nur als *.xlsm erlauben
von: Daniel
Geschrieben am: 07.08.2015 09:01:55
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

Bild

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

Bild

Betrifft: AW: VBA - Speichern nur als *.xlsm erlauben
von: Daniel
Geschrieben am: 07.08.2015 09:39:03
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

 Bild

Beiträge aus den Excel-Beispielen zum Thema "VBA - Speichern nur als *.xlsm erlauben"