Excel 2016 VBA принудительно сохранить в .xlsm — Как сохранить шаблон?

#excel #vba #templates #save

#excel #vba #шаблоны #Сохранить

Вопрос:

 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim fname As Variant, DateTime As String, myInitialFilename As String
On Error GoTo ErrorHandler
SaveAsUI = True
If SaveAsUI Then


    Cancel = True   'Cancel the original SaveAs

    DateTime = "_" amp; Format(Now(), "yyyy_mm_dd_hhmmss") '= " [yyyy_mm_dd]"
    'DateTime = " [" amp; Format(Now(), "yyyy_mm_dd  hhmm_ss") amp; "]" '= " [yyyy_mm_dd  hhmm_ss]" (use instead if you want time in the name)
    myInitialFilename = "Quote" 'EDIT THIS

     'Get filename (with path) for saving
    fname = Application.GetSaveAsFilename(InitialFileName:=myInitialFilename amp; DateTime, fileFilter:="Excel Marcro-Enabled Workbook (*.xlsm),*.xlsm")
    If fname = False Then Exit Sub  'Exit if user hit Cancel
    Application.EnableEvents = False  'Prevent this event from firing
    ThisWorkbook.SaveAs Filename:=fname, FileFormat:=52
      '52 = xlOpenXMLWorkbookMacroEnabled = xlsm (with macro's in 2007-2010)
    Application.EnableEvents = True  'Re-enable events
End If
Exit Sub
ErrorHandler:
Application.EnableEvents = True
MsgBox "An error occured during save." amp; Err.Number, vbCritical, "Error"
End Sub`
  

Я написал немного кода на VBA, чтобы принудительно сохранить или сохранить как тип файла .xlsm, который отлично работает. Однако, похоже, я не могу сохранить файл шаблона с кодом VBA в нем из-за того, что сам код принудительно сохраняет .xlsm.
У меня есть шаблон, сохраненный без кода, но как только я добавляю код, очевидно, я больше не могу сохранять как xltm, поскольку код нажимает на сохранение как xslm. Ищу лучшее практическое решение для сохранения моего шаблона!

Спасибо, Кэти Б.

Комментарии:

1. Лучше всего включить свой код.

2. если тип файла <> .xlt?

Ответ №1:

Любые изменения в файле будут либо всегда сохранять его как xltm, либо всегда как xlsm. Итак, вы хотите, чтобы флаг хранился в другом файле, значение которого по умолчанию равно false. Таким образом, когда вы захотите отредактировать свой шаблон, вы можете включить его и сохранить изменения, но при обычном использовании он будет сохранен как .xlsm.

Ответ №2:

Если вы не перезапишете SaveAsUI-флаг true, вы можете сохранить файл как шаблон при работе с ним. Если вы создаете новый файл из шаблона, флаг SaveAsUI будет иметь значение true, а затем ваш код принудительно сохранит макросы.