Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
VBA импорт из TXT с перескоком через строку
 
Доброе время суток!

Совсем новичок в VBA, по сути дела первый макрос без макрорекордера. Написал код для импорта из txt:
Но проблема в том что читает все строки из txt подряд, но в данных есть колонка Флаг и взависимости от данных в ней надо перепрыгнуть либо не на следующую строку, а дальше.

Не подскажите как это можно реализовать? Файлы во вложении

Код
Do While Not EOF(intFh)                                
     Line Input #intFh, strTXT                                                           
     strTXT = Replace((strTXT), "|MLD", ".MLD")
     strTXTs = Split(strTXT, "|")
           For j = 0 To 14
           Cells(i, j + 1) = RTrim(strTXTs(j))
           Next j
     i = i + 1
Loop  
 
Цитата
IYA-1985 написал:
не на следующую строку, а дальше.
Насколько дальше, можете уточнить?
 
если в колонке Флаг попадает четыре символа "Х" в первой строке, то читать не следующую а строку(т.е. вторую), а пятую.
если попадает два символа "Х" , то читать не следующую а строку(т.е. вторую), а третью
если попадает один символ "Х" , то читать следующую строку/
 
Пробуйте -
Код
Do While Not EOF(intFh)                                'начало цикла захвата с файла .тхт.
     Line Input #intFh, strTXT                                                           'Захватили строку целиком
     strTXT = Replace((strTXT), "|MLD", ".MLD")
     strTXTs = Split(strTXT, "|")
           For j = 0 To 14
           Cells(i, j + 1) = RTrim(strTXTs(j))
           Next j
           For j = 2 To UBound(Split(strTXTs(11), "X"))
            Line Input #intFh, strTXT
           Next
     i = i + 1
Loop
 
Апострофф, Супер! Благодарю, всё работает!
Пытаюсь разобраться как работает предложенный вами код. Так понимаю для первой строки считываем данные обрабатываем и потом три строки читаем в холостую?

И ещё не могу понять почему для "ХХХХ" UBound(Split(strTXTs(11), "X"))  будет равно 4? Как я понимаю после сплита не должно остаться массива, т.к. кроме Х-ксов там ничего нет.
 
Между ними есть НИЧЕГО :)
Обрабатываем текст и получаем текст, но пустой - ""
 
Цитата
Do While Not EOF(intFh)
    Line Input #intFh, strTXT
Лучше использовать функцию "Input".
Файл не будет открыт все время, это будет безопаснее.
 
Цитата
ocet p написал:
Лучше использовать функцию "Input".
Если файлик не слишком большой. и не превысит 2х миллиардов символов  (что наверно маловероятно) или не уместится в отведенную память 32х разрядного приложения, (что уже вероятно)
Изменено: БМВ - 31 Мар 2018 17:21:12
Страницы: 1
Читают тему (гостей: 2)