宏打开"另存为"窗口并自动填充文件名和类型



为了帮助加快保存审计表的过程,有一个命名约定,该约定已在工作簿中的参考表中处理,该参考表的单元格Defined Namesavefile_name

但是,审计表保存在现场的各种计算机上,最终由每个用户返回办公室后迁移到存档中。因此,我希望我的宏打开Save As对话框,填充名称并选择.xlsmxlOpenXMLWorkbookMacroEnabled(Excel宏启用工作簿(格式。

我当前的代码受到这篇文章的启发,将愉快地打开Save As对话框,并填充名称,但它不会选择.xlsm格式;它始终选择上次打开Save As对话框时的最后一个格式。我如何阻止这种情况发生?

我的VBA代码:

Dim FileName As String
FileName = Range("savefile_name").Value
Dim fPth As Object
Set fPth = Application.FileDialog(msoFileDialogSaveAs)
With fPth
.InitialFileName = FileName & ".xlsm"
.Title = "Save your File"
.InitialView = msoFileDialogViewList
If .Show <> 0 Then
ThisWorkbook.SaveAs FileName:=.SelectedItems(1), FileFormat:=xlOpenXMLWorkbookMacroEnabled
End If
End With

with语句中添加.FilterIndex = 2

此外,根据您正在使用的 Excel 版本,您可能不需要将& ".xlsm"添加到.InitialFileName的末尾。如果您想了解有关如何查找其他扩展/使其在代码中更具可变性的更多详细信息;你可以在这里查看答案。


Dim FileName As String
FileName = Range("savefile_name").Value
Dim fPth As Object
Set fPth = Application.FileDialog(msoFileDialogSaveAs)
With fPth
.InitialFileName = FileName
.Title = "Save your File"
.FilterIndex = 2
.InitialView = msoFileDialogViewList
If .Show <> 0 Then
ThisWorkbook.SaveAs FileName:=.SelectedItems(1), FileFormat:=xlOpenXMLWorkbookMacroEnabled
End If
End With

试试这种方式,我有同样的问题要保存在.xlsm中,它在Excel 2013上工作:

Dim FileName As String
FileName = Range("savefile_name").Value
Dim fname As Variant
fname = Application.GetSaveAsFilename(fileFilter:="Excel Marcro-Enabled Workbook (*.xlsm),*.xlsm", _
InitialFileName:=FileName, _
Title:="Save your File")
If fname = False Then Exit Sub  'Exit if user hit Cancel
ThisWorkbook.SaveAs FileName:=fname, FileFormat:=52

最新更新