Excel 选择文件夹选择器VBA停止并不继续代码

Excel 选择文件夹选择器VBA停止并不继续代码,excel,vba,Excel,Vba,我正在尝试选择一个文件夹,然后将该路径分配给我的文件变量。但是,选择文件夹后,代码将停止,并且不会转到下一步。有什么不对劲?下一步是“If selected_folder”“Then”,但它只是停止,调试器返回Sub Sub sheetCompare2() Application.ScreenUpdating = False Dim i As Integer Dim WS_Count As Integer Dim mDirs As String Dim pat

我正在尝试选择一个文件夹,然后将该路径分配给我的文件变量。但是,选择文件夹后,代码将停止,并且不会转到下一步。有什么不对劲?下一步是“If selected_folder”“Then”,但它只是停止,调试器返回Sub

Sub sheetCompare2()

Application.ScreenUpdating = False

    Dim i As Integer
    Dim WS_Count As Integer
    Dim mDirs As String
    Dim path As String
    Dim OutFile As Variant, SrcFile As Variant
    Dim file As Variant
    Dim wb As Workbook
    Dim datevar As Variant
    Dim datevar2 As Variant
    
    Dim selected_folder As String
  
    Set wb = ThisWorkbook
    WS_Count = ActiveWorkbook.Worksheets.Count
    OutFile = ActiveWorkbook.Name

    With Application.FileDialog(msoFileDialogFolderPicker)
    .Title = "Select a Folder"
    If Application.FileDialog(msoFileDialogFolderPicker).Show = -1 Then
        selected_folder = .SelectedItems(1)
        
    End If
End With

  If selected_folder <> "" Then
    file = Dir(selected_folder)
    End If
    While (file <> "")
        path = selected_folder + file
        Workbooks.Open (path)
        SrcFile = ActiveWorkbook.Name
        datevar = Right(file, 9)
        datevar2 = Left(datevar, 4)

....'and so on

End Sub
子表compare2()
Application.ScreenUpdating=False
作为整数的Dim i
Dim WS_计数为整数
将MDIR设置为字符串
将路径设置为字符串
Dim OutFile作为变量,SrcFile作为变量
作为变量的Dim文件
将wb设置为工作簿
Dim-datevar作为变量
Dim datevar2作为变体
将所选文件夹设置为字符串
设置wb=ThisWorkbook
WS\u Count=ActiveWorkbook.Worksheets.Count
OutFile=ActiveWorkbook.Name
使用Application.FileDialog(msoFileDialogFolderPicker)
.Title=“选择一个文件夹”
如果Application.FileDialog(msoFileDialogFolderPicker).Show=-1,则
所选文件夹=.SelectedItems(1)
如果结束
以
如果选择了文件夹“”,则
file=Dir(所选文件夹)
如果结束
While(文件“”)
路径=所选文件夹+文件
工作簿。打开(路径)
SrcFile=ActiveWorkbook.Name
datevar=Right(文件,9)
datevar2=左(datevar,4)
……等等
端接头

请尝试更改此部分代码:

If selected_folder <> "" Then
    file = Dir(selected_folder)
    End If
    While (file <> "")
        path = mDirs + file
        Workbooks.Open (path)
        SrcFile = ActiveWorkbook.Name
        datevar = Right(file, 9)
        datevar2 = Left(datevar, 4)

'....'and so on
如果选择了\u文件夹“”,则
file=Dir(所选文件夹)
如果结束
While(文件“”)
路径=mDirs+文件
工作簿。打开(路径)
SrcFile=ActiveWorkbook.Name
datevar=Right(文件,9)
datevar2=左(datevar,4)
“等等”
与:

如果选择了\u文件夹“”,则
File=Dir(选定的\u文件夹&“\”和“*.xls*”)
如果结束
文件“”时执行此操作
路径=所选文件夹和文件
工作簿。打开(路径)
SrcFile=ActiveWorkbook.Name
datevar=Right(文件,9)
datevar2=左(datevar,4)
File=Dir
'...
环
要使
Dir
返回文件名,必须设置扩展名。至少
*.*
用于在所有文件之间进行迭代。但是,要在Excel中打开文件,最好像上面的代码那样使用
“*.xls*”

然后,要打开的文件的路径应该如上所述构建


您的代码没有显示如何重新定义
文件
,以使循环工作。在循环结束之前,可能有
File=Dir
。如果没有,我添加了…

请尝试更改这部分代码:

If selected_folder <> "" Then
    file = Dir(selected_folder)
    End If
    While (file <> "")
        path = mDirs + file
        Workbooks.Open (path)
        SrcFile = ActiveWorkbook.Name
        datevar = Right(file, 9)
        datevar2 = Left(datevar, 4)

'....'and so on
如果选择了\u文件夹“”,则
file=Dir(所选文件夹)
如果结束
While(文件“”)
路径=mDirs+文件
工作簿。打开(路径)
SrcFile=ActiveWorkbook.Name
datevar=Right(文件,9)
datevar2=左(datevar,4)
“等等”
与:

如果选择了\u文件夹“”,则
File=Dir(选定的\u文件夹&“\”和“*.xls*”)
如果结束
文件“”时执行此操作
路径=所选文件夹和文件
工作簿。打开(路径)
SrcFile=ActiveWorkbook.Name
datevar=Right(文件,9)
datevar2=左(datevar,4)
File=Dir
'...
环
要使
Dir
返回文件名,必须设置扩展名。至少
*.*
用于在所有文件之间进行迭代。但是,要在Excel中打开文件,最好像上面的代码那样使用
“*.xls*”

然后,要打开的文件的路径应该如上所述构建

您的代码没有显示如何重新定义
文件
,以使循环工作。在循环结束之前,可能有
File=Dir
。如果没有,我添加了…

file=Dir(选定的文件夹)
如果没有提供扩展名,则不会返回任何内容。当然,使用whiled字符。甚至
“*.*”
。请检查我在回答中建议的代码。
file=Dir(所选文件夹)
如果没有提供扩展名,则不会返回任何内容。当然,使用whiled字符。甚至
“*.*”
。请检查我在回答中建议的代码。