Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.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
选择多个文件夹-VBA_Vba_Excel - Fatal编程技术网

选择多个文件夹-VBA

选择多个文件夹-VBA,vba,excel,Vba,Excel,我正在使用宏将CSV文件合并为一个。 宏运行良好,但我有一个块,可以选择一个包含CSV文件的文件夹进行合并 两个问题: 我可以选择多个文件夹进行合并吗?(在一个文件夹中,我有很多CSV文件。) 如何从中选择其他初始目录来选择文件夹?我需要使用服务器上的文件夹 代码块: 'Browse to the folder with CSV files Set oApp = CreateObject("Shell.Application") Set oFolder = oApp.BrowseForFolde

我正在使用宏将CSV文件合并为一个。 宏运行良好,但我有一个块,可以选择一个包含CSV文件的文件夹进行合并

两个问题:

  • 我可以选择多个文件夹进行合并吗?(在一个文件夹中,我有很多CSV文件。)
  • 如何从中选择其他初始目录来选择文件夹?我需要使用服务器上的文件夹
  • 代码块:

    'Browse to the folder with CSV files
    Set oApp = CreateObject("Shell.Application")
    Set oFolder = oApp.BrowseForFolder(0, "Select folder with CSV files", 512)
    If Not oFolder Is Nothing Then
        foldername = oFolder.Self.Path
        If Right(foldername, 1) <> "\" Then
            foldername = foldername & "\"
        End If
    
    “浏览到包含CSV文件的文件夹
    设置oApp=CreateObject(“Shell.Application”)
    文件夹集=oApp.BrowseForFolder(0,“选择包含CSV文件的文件夹”,512)
    若并没有,那个么older什么都不是
    foldername=oFolder.Self.Path
    如果正确(foldername,1)“\”则
    foldername=foldername&“\”
    如果结束
    
    现在我可以从以下文件夹中选择一个文件夹:

    我很乐意从以下类似的选项中进行选择:


    您可以使用
    Application.FileDialog
    。这允许浏览文件夹并选择文件

    Dim fileCount As Long 
    
    ' Open the file dialog 
    With Application.FileDialog(msoFileDialogOpen) 
        .AllowMultiSelect = True 
        .Filters.Clear
        .Filters.Add "CSV files", "*.csv"
        .Show 
    
        For fileCount = 1 To .SelectedItems.Count 
            Debug.print .SelectedItems(fileCount) 
        Next fileCount  
    
    End With 
    
    根本不可能选择多个文件夹。即使同时选择两个文件夹也不起作用

    你可以选择

    • 一个文件夹中有多个文件(请参见)
    • 或仅一个文件夹
    以下是如何选择一个文件夹:

    Public子选择文件夹()
    将fdl设置为文件对话框
    Set fdl=Application.FileDialog(msoFileDialogFolderPicker)
    与fdl
    .InitialFileName=“C:\Temp”'开始选择文件夹的位置
    如果.Show-1那么
    MsgBox“已取消”'未选择任何内容
    其他的
    Debug.Print.SelectedItems(1)'所选文件夹
    如果结束
    以
    端接头
    
    是的,谢谢,它正在工作。但现在我必须在文件夹中标记所有csv文件:),并且仍然只能使用一个文件夹,而不能使用更多。因此,您想允许用户同时在多个文件夹中选择多个文件吗?别以为这是真的possible@SkirmanteValentaite根本不可能选择多个文件夹。即使同时选择两个文件夹也不起作用。您可以在一个文件夹中选择多个文件,也可以仅在一个文件夹中选择多个文件。您能帮助我编辑@FunThomas macro以在一个文件夹中不选择多个文件吗?我不擅长编写宏,我只能从单独的块中组合一个宏:)@skirmantevalentite just-us
    Application.FileDialog(msoFileDialogFolderPicker)
    不带过滤器,也不带
    AllowMultiSelect
    。显然,您也不需要循环,因为只有一个选定项
    。选择文件夹时,请选择编辑项(1)
    。看看我的答案。是用于Excel文件的。更改为类似“*.csv”后,可以使用。
    Public Sub SelectFolder()
        Dim fdl As FileDialog
    
        Set fdl = Application.FileDialog(msoFileDialogFolderPicker)
        With fdl
            .InitialFileName = "C:\Temp" 'where we start choosing a folder
            If .Show <> -1 Then
                MsgBox "canceled" 'nothing was selected
            Else
                Debug.Print .SelectedItems(1) 'the selected folder
            End If
        End With
    End Sub