1 Вопрос: Loop Through Files - Файл не найден

вопрос создан в Wed, May 8, 2019 12:00 AM

Итак, у меня есть этот код, который я нашел здесь: 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. Хммм, чтобы открыть файлы, вам нужен и путь, и amp; filename, Dir() возвращает только имя файла, поэтому вам нужно добавить путь.
    2019-05-08 16: 11: 00Z
  2. 2019-05-08 16: 12: 11Z
  3. @ Damian, хотя путь определен ...
    2019-05-08 16: 12: 51Z
  4. Set wb = Workbooks.Open(Filename:=SourceFolder & StrFile)
    2019-05-08 16: 13: 47Z
  5. @ level42 добавлено, но нет на workbooks.open(), вы видите, что при отладке StrFile62 вам дается только имя, для использования workbooks.open() вам нужен полный путь, а не только имя файл.
    2019-05-08 16: 14: 14Z
1 ответ                              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
    
1
2019-05-08 16: 16: 07Z
источник размещен Вот