通过对话框将当前工作簿另存为单独的 Excel 工作簿 [重复]

Posted

技术标签:

【中文标题】通过对话框将当前工作簿另存为单独的 Excel 工作簿 [重复]【英文标题】:Save current Workbook as separate Excel Workbook via dialog box [duplicate] 【发布时间】:2021-04-13 06:37:14 【问题描述】:

我正在尝试制作一个显示另存为对话框的按钮,并在保存时将当前工作簿另存为单独的 Excel 工作簿,我为其输入文件名和位置。

到目前为止,我在代码方面所拥有的是:

Private Sub Save_Button_Click()

Application.GetSaveAsFilename InitialFileName:="S0000.xlsx"

End Sub

有人可以分享一下这个操作的代码吗?

【问题讨论】:

要将工作簿保存为xlsx 还是xlsm Application.GetSaveAsFilename More Links 【参考方案1】:

试试这个:

Private Sub Save_Button_Click()
    dim fName as variant

    fName = Application.GetSaveAsFilename( _
        InitialFileName:="S0000.xlsx", _
        FileFilter:="Excel Workbook (*.xlsx), *.xlsx")
    ActiveWorkbook.SaveAs Filename:=fName, FileFormat:=xlWorkbookDefault

End Sub

这改编自 Duplicate your workbook in seconds 的示例。

它保存 活动 工作簿(即当前在 Excel 前台打开的工作簿)。这可能是也可能不是包含代码的工作簿。

如果您想确保包含此代码的工作簿是已保存的工作簿,请将 ActiveWorkbook 更改为 ThisWorkbook

要捕获用户未提供的文件名(在他们删除您的默认文件名之后),您可以添加条件语句进行检查,例如:

Private Sub Save_Button_Click()
    dim fName as variant

    fName = Application.GetSaveAsFilename( _
        InitialFileName:="S0000.xlsx", _
        FileFilter:="Excel Workbook (*.xlsx), *.xlsx")
    If fName <> False Then ActiveWorkbook.SaveAs Filename:=fName, FileFormat:= xlOpenXMLWorkbook

End Sub

【讨论】:

谢谢!但那个 fName 是什么?整条线对我来说都是红色的 您设置了Option Explicit 吗?如果这样做,请在 Do 上方添加一行 Dim fName$(相应地编辑答案) 它确实打开了一个对话框,格式为“所有文件”,这是不正确的。它甚至不允许您更改格式以将文件另存为 答案已更新以包含 xlsx 文件格式而不是“所有文件”(未指定) 现在更好了:) 但是MsgBox "You did not provide a filename. File not saved.", vbExclamation, "File save error" 还是比mAns = MsgBox("You did not provide a filename. File not saved.", vbExclamation, "File save error")

以上是关于通过对话框将当前工作簿另存为单独的 Excel 工作簿 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Excel VBA 使用单元格文本作为文件名在当前目录中另存为

遍历下拉列表并将工作簿另存为新文件

vbscript [将工作表另存为XLSX]将Excel文件中的所有工作表另存为单独的XLSX文件。 #Excel

强制“是”以保存并另存为无宏工作簿

Excel中的跨产品VBA

如何使用另存为对话框将创建的 excel 实例保存到客户端的磁盘