Ошибка времени выполнения 53 файл не найден для некоторых файлов в каталоге - PullRequest
0 голосов
/ 30 мая 2019

Я написал программу, предлагающую пользователю выбрать папку, заполненную файлами .txt, а затем извлечь информацию.

Есть некоторые файлы, которые он не может найти, и дает мне файл ошибки времени выполнения 53, который не найден, несмотря на то, что файл находится в папке.

Отладка указывает на строку «Открыть мой файл для ввода как № 1».

Если я указываю путь к файлу и запускаю макрос, он извлекает информацию, поэтому путь к файлу правильный.

Я посмотрел на это решение

Excel VBA - ошибка времени выполнения '53': файл не найден. Но файл был найден

в основном указывает каталог, затем пытается прочитать каждый файл из этого каталога, но я получаю ту же ошибку.

Вот исходный код, предлагающий пользователю выбрать папку, а не читать каждый файл в папке.

Sub read()
'PURPOSE: Send All Data From Text File To A String Variable

    Dim TextFile As Integer
    Dim FilePath As String
    Dim FileContent As String


    Dim MyFolder As String, MyFile As String

'Opens a file dialog box for user to select a folder

    With Application.FileDialog(msoFileDialogFolderPicker)
       .AllowMultiSelect = False
       .Show
       MyFolder = .SelectedItems(1)
       Err.Clear
    End With


'create a new object for files in that folder and apply the for/loop as below
    Dim objFSO As Object
    Dim objFolder As Object

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFolder = objFSO.getFolder(MyFolder)

    Dim fls As Object
    Dim i As Integer
    i = 1
    For Each fls In objFolder.Files

'File Path of Text File

    MyFile = Dir(MyFolder & "\" & fls.Name, vbReadOnly)

'Determine the next file number available for use by the FileOpen function

    TextFile = FreeFile


'Open the text file

    Open MyFile For Input As #1

1 Ответ

0 голосов
/ 30 мая 2019

используя строку, вы фактически удаляете имя файла из его пути

MyFile = Dir(MyFolder & "\" & fls.Name, vbReadOnly)

просто сделайте его

MyFile = MyFolder & "\" & fls.Name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...