在“新”文件->另存为用户界面上将默认设置为 xlsm,用于特定模板
Posted
技术标签:
【中文标题】在“新”文件->另存为用户界面上将默认设置为 xlsm,用于特定模板【英文标题】:Set default to xlsm on "new" File -> Save As user interface, for specific template 【发布时间】:2021-08-13 00:22:45 【问题描述】:我有一个 Excel 启用宏的模板(“template.xltm”),当它正常打开时,会创建一个没有名称的新文件。用户应该将其保存为启用宏的文件,并使用他们选择的名称。
这意味着用户的第一个“另存为”应限制为 xlsm 文件格式(文件类型:52)。我当前的代码是:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If wb.Path = NullString Then
With Application.FileDialog(msoFileDialogSaveAs)
.FilterIndex = 2
If .Show Then
ActiveWorkbook.SaveAs Filename:=.SelectedItems(1), _
FileFormat:=xlOpenXMLWorkbookMacroEnabled
End If
End With
如果您在打开“旧”另存为界面时单击“保存”图标(软盘图标),这将起作用。
当您点击打开“新”界面的文件->另存为时,它不起作用。这给出了第一个选项 *.xlsx 而不是 *.xlsm。
什么 VBA 代码还会触发此接口以默认为启用宏的文件?
【问题讨论】:
For reference 【参考方案1】:我认为您需要此设置?
文件 ==> 选项 ==> 保存
【讨论】:
谢谢,但这不是一个选项,因为这应该发生在用户的计算机上,所以我对他们的选项设置没有发言权 尝试使用WindowDeactivate ...Private Sub Workbook_WindowDeactivate(ByVal Wn As Window) ... ... End Sub
【参考方案2】:
检查下面的代码:
信用:running vba code before save or save as
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If SaveAsUI or Not SaveAsUI Then
If wb.Path = NullString Then
With Application.FileDialog(msoFileDialogSaveAs)
.FilterIndex = 2
If .Show Then
ActiveWorkbook.SaveAs Filename:=.SelectedItems(1), _
FileFormat:=xlOpenXMLWorkbookMacroEnabled
End If
End With
End If
End If
【讨论】:
嗨,Vedran,感谢您的建议。不幸的是,您的添加不会触发 BeforeSave 事件。我可能不得不重新提出问题并提出更一般的问题:如何使用“Windows 上的新文件->另存为界面”触发 BeforeSave 事件?以上是关于在“新”文件->另存为用户界面上将默认设置为 xlsm,用于特定模板的主要内容,如果未能解决你的问题,请参考以下文章