Loop Through Files - Файл не найден - PullRequest
0 голосов
/ 08 мая 2019

Итак, у меня есть этот код, который я нашел здесь: 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"

Iя не перемещал файлы, я не менял пути, я не переименовывал файлы.Все точно так же ... и все же он не может найти файлы.Я также протестировал жесткое кодирование пути с той же ошибкой.

Одна вещь, которую я заметил, была интересной, даже если я вернусь к голому коду:

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 Ответ

1 голос
/ 08 мая 2019

Имя файла, возвращаемое 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...