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

时间:2018-06-01 18:21:19

标签: excel vba save xlsx xlsm

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

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

它会显示我要保存的新工作簿,将其保存在名称NotNum(一个变化的变量)和字符串" Make Ready"然后把我原来的工作簿带回来,这样我就可以进一步操作了。

保存功能完美无缺,但保存到我的默认文件夹(目前为“我的文档”#39;)。有没有办法可以在保存功能之前或之后编写一些东西,允许用户选择保存文档的位置?感谢

1 个答案:

答案 0 :(得分:2)

你正在寻找这样的东西:

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

快乐的编码!