让用户选择保存 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 工作簿的位置的主要内容,如果未能解决你的问题,请参考以下文章

插上翅膀,让Excel飞起来——xlwings

VBA Excel 备份:通过 VBA 以新名称保存当前工作簿的副本,保留 VBA 脚本,无提示

excel怎样恢复未保存的工作簿文件?

Excel-VBA - 列出任何给定工作簿的所有用户窗体的控件

MS Access:从Excel工作簿中选择工作表

将新创建的工作簿保存到特定文件夹