Excel 2016 VBA 强制保存到 .xlsm - 如何保存模板?
Posted
技术标签:
【中文标题】Excel 2016 VBA 强制保存到 .xlsm - 如何保存模板?【英文标题】:Excel 2016 VBA force save to .xlsm - How to save the template? 【发布时间】:2016-10-06 16:14:30 【问题描述】: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 = "_" & Format(Now(), "yyyy_mm_dd_hhmmss") '= " [yyyy_mm_dd]"
'DateTime = " [" & Format(Now(), "yyyy_mm_dd hhmm_ss") & "]" '= " [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 & 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." & Err.Number, vbCritical, "Error"
End Sub`
我已经编写了一些 VBA 代码来强制保存或另存为文件类型 .xlsm,这可以正常工作。但是,由于代码本身强制保存 .xlsm,我似乎无法保存包含 VBA 代码的模板文件。 我有一个没有代码保存的模板,但是一旦我添加了代码,显然我不能再保存为 xltm,因为代码会推动保存为 xslm。寻找保存我的模板的最佳实践解决方案!
谢谢, 凯西 B.
【问题讨论】:
最好包含您的代码。 如果文件类型 .xlt? 【参考方案1】:文件中的任何更改都会使其始终保存为 xltm,或始终保存为 xlsm。因此,您希望将标志存储在不同的文件中,默认为 false。这样,当你想编辑你的模板时,你可以打开它并保存你的更改,但在正常使用中,它会保存为 .xlsm。
【讨论】:
【参考方案2】:如果您不使用 true 覆盖 SaveAsUI-Flag 您可以在处理文件时将文件另存为模板。 如果您从模板创建一个新文件 SaveAsUI-Flag 将为真,然后您的代码强制 保留宏。
【讨论】:
以上是关于Excel 2016 VBA 强制保存到 .xlsm - 如何保存模板?的主要内容,如果未能解决你的问题,请参考以下文章
excel 用vba给某个excel.xls文件添加密码 怎么写啊,不要保护工作簿或者工作表,只是加密码而已