Страницы: 1
RSS
Копирование текста из txt невзирая на ограничитель
 
Доброе утро, специалисты по экселю.

Вот такой вопрос хочу я задать.

Макрос вытаскивает текст из документа txt - который идет после последней строки, начинающийся со слов "РАЗДЕЛИТЕЛЬ ТЕКСТА"
Однако если - запись "РАЗДЕЛИТЕЛЬ ТЕКСТА" - присутствует в конце документа txt - то макрос все равно выводит в столбец F - какой-то текст.
Хотя вроде бы - ничего выводить не должен.

Как изменить макрос, чтобы он не выводил текст последней строки, если он начинается со слова "РАЗДЕЛИТЕЛЬ ТЕКСТА" ?
 
Доброе.
Выход надо раньше делать из цикла
Код
        If InStr(1, sStr, "РАЗДЕЛИТЕЛЬ ТЕКСТА") > 0 Then
            Do
1000
                Line Input #filenum, sStr
                i = i + 1
                If EOF(filenum) Then GoTo ExitSub
                ReDim Preserve meData(1 To i)
                meData(i) = sStr
            Loop While InStr(1, sStr, "РАЗДЕЛИТЕЛЬ ТЕКСТА") = 0
            i = 0
            ReDim meData(1 To 1)
            GoTo 1000
        End If
 
doober, не работает.

Текст по-прежнему вводится в столбец F.
Хотя он по идее не должен вводится, поскольку после последней строки с "разделителем текста" - никакого текста нет.
Изменено: Шурик Владимирский - 23.11.2018 22:31:01
 
Цитата
Шурик Владимирский написал:
Текст по-прежнему вводится в столбец F
Моя совсем ничего не понимает.
Вот что вывелось
4
234
67
Как тогда должно быть?
 
doober написал: Вот что вывелось

Этот результат должен выводится - только если в конце документа txt - нет строки с "РАЗДЕЛИТЕЛЬ ТЕКСТА".
Цитата
doober написал: Как тогда должно быть?
Поскольку в конце документа txt - есть строка с записью "РАЗДЕЛИТЕЛЬ ТЕКСТА"...
То в этом случае выводится то, что идет после этой строки.
А поскольку после последней строки "РАЗДЕЛИТЕЛЬ ТЕКСТА" - больше ничего нет - то и выводится ничего не должно.

То есть - ничего не должно выводится в столбец F - в этом случае.
(А у вас - выводится)
Изменено: Шурик Владимирский - 24.11.2018 03:20:47
 
Шурик Владимирский, так попробуйте
Код
Sub readtxt()
    Dim FileNameTxt$: FileNameTxt = "D:\12\1.txt"
    Dim meData$(), i&, sStr$, LastRow&
    Dim filenum&: filenum = FreeFile()
    
    LastRow = ActiveSheet.Cells(Rows.Count, 6).End(xlUp).Row

    Open FileNameTxt For Input As #filenum
    sStr = Input(LOF(filenum), filenum)
    Close #filenum
    i = InStrRev(sStr, "РАЗДЕЛИТЕЛЬ ТЕКСТА")
    If i Then
      i = InStr(i, sStr, vbLf)
      If i Then
        meData = Split(Mid$(sStr, i + 1), vbCrLf)
        If UBound(meData) >= 0 Then
          Cells(LastRow + 1, 6).Resize(UBound(meData) + 1).Value = Application.Transpose(meData)
        End If
      End If
    End If

End Sub
 
Казанский, а вот так - вроде работает.
Большое спасибо за ответ.
Страницы: 1
Наверх