Открытие каждого файла в цикле
Я пишу подпрограмму, которая должна извлечь текст из файлов в каталоге. Процедура ниже. Это работает до тех пор, пока в каталоге есть только один файл. Когда их больше одного, это говорит мне Set intFSO = intFSO.OpenTextFile(filePath, 1)
строка ниже.
Я предполагаю, что есть что-то, что мне нужно сделать, чтобы сбросить для следующего файла, но я не могу понять, что это такое. Какие-нибудь советы?
Sub ExtractEDI(folPath)
Dim sName, fil
Dim intFSO
Dim filePath
Set intFSO = CreateObject("Scripting.FileSystemObject")
For Each fil In fso.GetFolder(folPath).Files
filePath = folpath & "\" & fil.Name
Set intFSO = intFSO.OpenTextFile(filePath, 1)
'will process file here
intFSO.Close
Next
Set intFSO = Nothing
End Sub
Это еще не все в этом сценарии. Вышеприведенная процедура вызывается рекурсивно для обхода подкаталогов. Все это работает нормально.
1 ответ
Set intFSO = intFSO.OpenTextFile(filePath, 1) ' ^^^^^^ ^^^^^^
Не заменяйте FileSystemObject
экземпляр с дескриптором файла, если вы собираетесь использовать его снова в следующей итерации. Используйте другую переменную для файла. И отбросить весь путь конкатенации / OpenTextFile
притон. Вы можете открыть файл прямо из File
объект.
Это все, что вам нужно (при условии fso
это глобальный FileSystemObject
пример):
Sub ExtractEDI(folPath)
For Each fil In fso.GetFolder(folPath).Files
Set f = fil.OpenAsTextStream
'will process file here
f.Close
Next
End Sub