Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
让用户选择保存Excel工作簿的位置_Excel_Vba_Save_Xlsx_Xlsm - Fatal编程技术网

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

让用户选择保存Excel工作簿的位置,excel,vba,save,xlsx,xlsm,Excel,Vba,Save,Xlsx,Xlsm,我目前有一个宏,它将读取数据,打印结果表,然后将数据和结果复制到另一个工作簿,然后保存为常规的.xlsx文件,而不是.xlsm文件。我保存这本书的代码如下: NewBook.Activate ActiveWorkbook.SaveAs Filename:=NotNum & " Make Ready", _ FileFormat:=xlOpenXMLWorkbook CTLBook.Activate 它会调出我要保存的新工作簿,以NotNum(一个不断变化的变量)和字符串“Ma

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

NewBook.Activate
ActiveWorkbook.SaveAs Filename:=NotNum & " Make Ready", _
     FileFormat:=xlOpenXMLWorkbook
CTLBook.Activate
它会调出我要保存的新工作簿,以NotNum(一个不断变化的变量)和字符串“Make Ready”保存它,然后调回我的原始工作簿,以便我可以进一步操作它


“保存”功能工作正常,但它会保存到我的默认文件夹(当前为“我的文档”)。是否有一种方法可以在保存功能之前或之后编写代码,允许用户选择保存文档的位置?谢谢

您正在寻找这样的产品:

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
这是您要完成的部分:

ActiveWorkbook.SaveAs Filename:=sItem & "\" & fileSaveName, _
     FileFormat:=xlOpenXMLWorkbook
我将你的一些名字编入其中,并将我使用的一些子文件编入其中,这些子文件单独或全部打印在一个文件中

编辑: 此代码改编自@Ozgrid和@Gary的学生


快乐编码

您正在寻找这样的东西:

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
这是您要完成的部分:

ActiveWorkbook.SaveAs Filename:=sItem & "\" & fileSaveName, _
     FileFormat:=xlOpenXMLWorkbook
我将你的一些名字编入其中,并将我使用的一些子文件编入其中,这些子文件单独或全部打印在一个文件中

编辑: 此代码改编自@Ozgrid和@Gary的学生


快乐编码

您可以使用内置文件夹选择器对话框向用户询问可能包含您所需信息的位置need@TimWilliams我不熟悉VBA的内置功能。我该如何称呼这段对话?@controlnetic.nomad这条线索正是我所需要的。非常感谢。您可以使用内置文件夹选择器对话框向用户询问可能包含您所需信息的位置need@TimWilliams我不熟悉VBA的内置功能。我该如何称呼这段对话?@controlnetic.nomad这条线索正是我所需要的。非常感谢。谢谢你,好先生!你的代码加上之前有人发布的帖子,正好满足了我的需要。当我试着自己运行它时,我开始遇到语法错误,而你的代码帮助我调试它并使它运行起来。谢谢你,好先生!你的代码加上之前有人发布的帖子,正好满足了我的需要。当我试着自己运行它时,我开始遇到语法错误,而您的代码帮助我调试它并使它运行起来。