通过对话框将当前工作簿另存为单独的 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 使用单元格文本作为文件名在当前目录中另存为