因此,我有在以下位置找到的这段代码: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”
只是不确定是否与此有关。
答案 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