Hallo
Ja Displayalerts false deaktiviert die Fehlermldungen. save changes false, weil du 2 Schritte vorher bereits die Mappe speicherst.
Folgender Code speichert deine XLSM Mappe als XLSX Mappe im selben Ablageordner. Dabei Kannst du nach dem Auslösen des Codes weiterarbeiten, in deiner XLSM Mappe (falls gewünscht).
Sub XLSM_als_XLSX_speichern()
Dim Ordnerpfad As Variant
Dim Pfad As String, Dateiname As String
Dim filepath As String, closefile As String, closefilename As String
'---------------------------------------------------------------------
Application.DisplayAlerts = False
Application.ScreenUpdating = False
filepath = ActiveWorkbook.FullName
Pfad = ActiveWorkbook.Path
Datum = Now()
Dateiname = ActiveWorkbook.Name
If InStr(Dateiname, ".") > 0 Then
Dateiname = Left(Dateiname, InStr(Dateiname, ".") - 1)
End If
Datum = Format(Datum, "_dd.mm.yyyy_hh_mm_ss")
closefile = Pfad & "\" & Dateiname & ".xlsx"
closefilename = Dateiname & ".xlsx"
ActiveWorkbook.Save
ActiveWorkbook.SaveAs Filename:=closefile, FileFormat:=51, ConflictResolution:=xlLocalSessionChanges
'Ordnerpfad = Shell("Explorer.exe " & Pfad, vbNormalFocus)
'Debug.Print Pfad & "\" & "Test_" & Dateiname & ".xlsx"
Application.Workbooks.Open (filepath)
Workbooks(closefilename).Close SaveChanges:=False
Application.ScreenUpdating = True
ActiveWindow.WindowState = xlNormal
End Sub
|