#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, а затем ваш код принудительно сохранит макросы.