Ich habe eine Excel-Datei als Vorlage inklusive Makros erstellt und möchte, dass der Nutzer, seine Kopien der Datei auch direkt mit Makros (also im Format .xlsm) abspeichern. Ansonsten erscheint eine verwirrende Abfrage beim Speichern
Dafür habe ich folgenden Code eingefügt. Aber leider wird beim Speichern standardmäßig immer noch ".xlsx" ausgewählt. Wo liegt mein Fehler?
'stellt sicher, dass Datei mit Makros gespeichert wird
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim FileNameVal As String
If SaveAsUI Then
FileNameVal = Application.GetSaveAsFilename(, "Excel Macro-Enabled Workbook (*.xlsm), *.xlsm")
Cancel = True
If FileNameVal = "False" Then 'User pressed cancel
Exit Sub
End If
ThisWorkbook.SaveAs Filename:=FileNameVal & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled
Application.EnableEvents = True
End If
End Sub
Ich habe auch einen Button, der die aktuelle Datei als PDF ausdruckt. Entstehen dabei vielleicht Konflikte?Sub Drucken()
With ActiveSheet.PageSetup
.BottomMargin = 56 'Abstand zum unteren Papierrand
.FooterMargin = 42 'Abstand der Fußzeile zum unteren Papierrand in Punkt (56 pt = 2cm, 42 pt = 1,5 cm)
'&8 = Schriftgröße auf 8 einstellen, WorksheetFunction.Rept("_", 50) = Trennstrich per Repeat, vbCR = Zeilenumbruch
.LeftFooter = "&8" & _
Application.WorksheetFunction.Rept("_", 80) & vbCr & _
"Letzte Änderung: " & _
ActiveWorkbook.BuiltinDocumentProperties _
("last save time") & vbCr & _
"Ersteller: " & _
ActiveWorkbook.BuiltinDocumentProperties _
("author") & vbCr & "Speicherort: " & ActiveWorkbook.FullName
End With
'prüft, ob das Verzeichnis "Exporte" bereits existiert, sonst wird es angelegt
If Dir(ThisWorkbook.Path & "\Exporte", vbDirectory) = "" Then
MkDir ThisWorkbook.Path & "\Exporte"
End If
'speichert das aktive Blatt (Zusammenfassung) als PDF im Ordner Exporte mit aktuellem Datum und Projektnamen aus B3
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=ThisWorkbook.Path & "\Exporte\" & _
Format(Date, "YYYY.MM.DD_") & "Projektkosten_" & Worksheets("Zusammenfassung").Cells(3, 2).Value & ".pdf"
'Message gespeichert mit Speicherort anzeigen
MsgBox "Die Kostenzusammenfassung wurde unter " & vbCr & _
ThisWorkbook.Path & "\Exporte\" & _
Format(Date, "YYYY.MM.DD_") & "Projektkosten_" & Worksheets("Zusammenfassung").Cells(3, 2).Value & ".pdf" & vbCr & "gespeichert.", vbInformation
End Sub Schöne Grüße
davidina11