让用户选择保存 Excel 工作簿的位置
Posted
技术标签:
【中文标题】让用户选择保存 Excel 工作簿的位置【英文标题】:Having a user choose where to save an Excel workbook 【发布时间】:2018-06-01 18:21:18 【问题描述】:我目前有一个宏,它可以读取数据、打印结果表,然后将数据和结果复制到不同的工作簿,然后将其保存为常规的 .xlsx 文件,而不是 .xlsm。我保存那本书的代码如下:
NewBook.Activate
ActiveWorkbook.SaveAs Filename:=NotNum & " Make Ready", _
FileFormat:=xlOpenXMLWorkbook
CTLBook.Activate
它会调出我要保存的新工作簿,将它保存在名称 NotNum(一个不断变化的变量)和字符串“Make Ready”下,然后带回我原来的工作簿,以便我可以进一步操作。
保存功能完美运行,但它保存到我的默认文件夹(当前为“我的文档”)。有没有一种方法可以在保存功能之前或之后编写一些代码,允许用户选择保存文档的位置?谢谢
【问题讨论】:
您可以使用内置的文件夹选择器对话框向用户询问位置 This thread 可能有您需要的信息 @TimWilliams 我对 VBA 的内置功能没有经验。我该如何称呼这种对话? @cybernetic.nomad 该线程正是我所需要的。谢谢! 【参考方案1】:你正在寻找这样的东西:
Dim fldr As FileDialog
Dim sItem As String
Dim fileSaveName As String
Set fldr = Application.FileDialog(msoFileDialogFolderPicker)
With fldr
.Title = "Select a Folder to Save to"
.AllowMultiSelect = False
.InitialFileName = Application.DefaultFilePath
If .Show <> -1 Then GoTo NextCode
sItem = .SelectedItems(1)
End With
NextCode:
Set fldr = Nothing
sItem 现在有了路径。
您可以提示输入文件名:
fileSaveName = Application.GetSaveAsFilename(NotNum & " Make Ready", fileFilter:="Excel Files (*.xlsx), *.xlsx")
这是你要完成的部分:
ActiveWorkbook.SaveAs Filename:=sItem & "\" & fileSaveName, _
FileFormat:=xlOpenXMLWorkbook
我将您的一些命名融入其中,并编织出我使用的一些子程序,这些子程序可以单独或在一个文件中打印 PDF 文件。
编辑: 此代码改编自 @Ozgrid 和 @Gary's Student 。 . .
编码愉快!
【讨论】:
谢谢您的好先生!您的代码与之前发布的线程相结合,正是我所需要的。当我尝试自己运行它时,我开始遇到语法错误,你的代码帮助我调试它并让它运行起来。以上是关于让用户选择保存 Excel 工作簿的位置的主要内容,如果未能解决你的问题,请参考以下文章
VBA Excel 备份:通过 VBA 以新名称保存当前工作簿的副本,保留 VBA 脚本,无提示