在“新”文件->另存为用户界面上将默认设置为 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,用于特定模板的主要内容,如果未能解决你的问题,请参考以下文章

我想在用户右键单击时更改另存为对话框文件名

火狐浏览器怎样改变图片另存为保存图片的默认格式

用于在另存为对话框中将工作表另存为预命名文件的 VBA 代码

文件相关操作 - 另存为

如何在java gui上将一张图片的某些部分变为透明的

excel只读文件默认保存在哪