Я написал программу, предлагающую пользователю выбрать папку, заполненную файлами .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