VBA Excel Четене на текстов файл от определен номер на ред нататък

да кажем, че имаме външна програма, която записва текстов файл по време на дълго изчисление. Сега трябва да прочета този файл, за да проверя състоянието на изчислението (остатъчни стойности, спиране при грешка и т.н.). Файлът е с размер до 1Mb. Тъй като програмата добавя нова информация само в края на файла, не искам да го отварям отново и да го чета всеки път от самото начало.

Има ли начин да започна да чета файла от определен номер на ред (където спрях последния път)?

Какво се случва с файла, когато се отвори в Excel за четене и след това се промени от външната програма? Позицията на EoF се измества напред?


person AntonZi    schedule 11.08.2016    source източник
comment
Не можете да отворите файл, който докато е отворен от друг процес.   -  person Trimax    schedule 11.08.2016
comment
Доколкото разбрах програмата записва файла или му добавя последни редове и го затваря. За да мога да отворя и прочета файла с notepad.   -  person AntonZi    schedule 11.08.2016
comment
За по-лесно можете да работите с текстов помощен файл за състояние с броя на редовете, обработени до този момент.   -  person Trimax    schedule 11.08.2016
comment
Разбира се. Проблемът е - когато отворя следващия актуализиран файл, не искам да препрочитам всички тези редове, които вече съм анализирал. Има ли нещо като File Input #1, line_number, text_string, където т.е. line_number = 10023?   -  person AntonZi    schedule 11.08.2016


Отговори (1)


Можете да използвате израза Търсене на [#]номер на файл, позиция за преместване на определен байт в отворен файл. Просто запазете позицията във файла, където сте спрели с функцията Seek( номер на файл) или с LOF( filennumber ), ако сте достигнали EOF(номер на файл).

person Vincent G    schedule 11.08.2016
comment
А има ли нещо подобно в текстов режим? защото го отварям в текст. - person AntonZi; 11.08.2016
comment
Няма текстов режим за израз Open във vba. Тъй като не сте публикували никакъв код, не мога да ви помогна повече. - person Vincent G; 11.08.2016