让用户选择保存 Excel 工作簿的位置

Having a user choose where to save an Excel workbook

我目前有一个宏可以读取数据、打印结果 sheet,然后将数据和结果复制到另一个工作簿,然后保存为常规 .xlsx 文件而不是 .xlsm .我保存那本书的代码如下:

NewBook.Activate
ActiveWorkbook.SaveAs Filename:=NotNum & " Make Ready", _
     FileFormat:=xlOpenXMLWorkbook
CTLBook.Activate

它会调出我要保存的新工作簿,将其保存在名称 NotNum(一个变化的变量)和字符串 "Make Ready" 下,然后调出我的原始工作簿,以便我可以进一步操作它。

保存功能完美运行,但它保存到我的默认文件夹(当前 'My Documents')。有没有一种方法可以在保存功能之前或之后编写一些代码,使用户可以选择保存文档的位置?谢谢

您正在寻找这样的东西:

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 的学生。 . .

编码愉快!