循环浏览文件-找不到文件

时间:2019-05-08 16:08:32

标签: excel vba

因此,我有在以下位置找到的这段代码:https://stackoverflow.com/a/10382861

当我第一次找到它时,我对其进行了修改,以实际打开它找到的文件:

Sub LoopThroughFiles()
    Dim SourceFolder As String
    SourceFolder = "C:\Users\Jeff\Downloads\IO\"

    Dim StrFile As String
    StrFile = Dir(SourceFolder & "*.xls")

    Dim wb As Workbook

    Do While Len(StrFile) > 0
        Debug.Print StrFile
        Set wb = Workbooks.Open(Filename:=StrFile)
        StrFile = Dir
    Loop
End Sub

当我第一次修改此代码时,它可以很好地工作,并且可以为我打开文件。

所以我决定做一些整理工作,并清理一下代码,删除多余的空间等,但是现在当我运行相同的代码时,它会告诉我:

  

运行时错误“ 1004”
  找不到文件“ Excelfile.xls”

我没有移动任何文件,没有改变任何路径,也没有重命名任何文件。一切都完全相同...但是找不到文件。我还测试了硬编码路径,但有同样的错误。

我注意到的一件事很有趣,即使我回到裸露的代码:

Sub LoopThroughFiles()
    Dim StrFile As String
    StrFile = Dir("C:\Users\Jeff\Downloads\IO\*.xls")
    Do While Len(StrFile) > 0
        Debug.Print StrFile
        StrFile = Dir
    Loop
End Sub

,只需在Debug.Print Dir之后添加一个Debug.Print StrFile。在任何给定时间,StrFile和Dir似乎都读取了错误的文件。

第一个打印输出是“ file1.xls”,第二个打印输出是“ file2.xls”

enter image description here

只是不确定是否与此有关。

1 个答案:

答案 0 :(得分:1)

Dir返回的文件名不包含源文件夹。除非您可以可靠地使用默认文件夹作为源文件夹,否则您需要将 SourceFolder 连接到 StrFile 上,否则就有可能在错误的文件夹中查找。

Sub LoopThroughFiles()

    Dim SourceFolder As String
    SourceFolder = "C:\Users\Jeff\Downloads\IO\"

    Dim StrFile As String
    StrFile = Dir(SourceFolder & "*.xls")

    Dim wb As Workbook

    Do While Len(StrFile) > 0
        Debug.Print StrFile
        Set wb = Workbooks.Open(Filename:=SourceFolder & StrFile)
        StrFile = Dir
    Loop

End Sub