Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Вставка содержимого txt - после конкретного слова - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Вставка содержимого txt - после конкретного слова (Макросы/Sub)
Вставка содержимого txt - после конкретного слова
Бонифаций Дата: Среда, 21.11.2018, 05:43 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Доброго времени.
У меня такой вопрос.

Вот есть, построчные текстовые записи в файле txt
Их нужно вставить на лист3 экселя.
Но вставить нужно не все, а только те текстовые строки, которые построчно идут после надписи "РАЗДЕЛИТЕЛЬ ТЕКСТА" - в этом текстовом файле.

Как такое макросом реализовать ?
К сообщению приложен файл: 5057219.txt (0.2 Kb) · 3320542.xls (29.5 Kb)


Сообщение отредактировал Бонифаций - Среда, 21.11.2018, 05:43
 
Ответить
СообщениеДоброго времени.
У меня такой вопрос.

Вот есть, построчные текстовые записи в файле txt
Их нужно вставить на лист3 экселя.
Но вставить нужно не все, а только те текстовые строки, которые построчно идут после надписи "РАЗДЕЛИТЕЛЬ ТЕКСТА" - в этом текстовом файле.

Как такое макросом реализовать ?

Автор - Бонифаций
Дата добавления - 21.11.2018 в 05:43
StoTisteg Дата: Среда, 21.11.2018, 10:09 | Сообщение № 2
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

Excel 2010
Не очень понятна фраза "те текстовые строки, которые построчно идут после надписи "РАЗДЕЛИТЕЛЬ ТЕКСТА"". Покажите в экселевском файле, что и куда нужно вставить.


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

Автор - StoTisteg
Дата добавления - 21.11.2018 в 10:09
boa Дата: Среда, 21.11.2018, 10:56 | Сообщение № 3
Группа: Друзья
Ранг: Ветеран
Сообщений: 549
Репутация: 167 ±
Замечаний: 0% ±

365
А где же ваш макрос, который вставляет все данные из текстового файла?


 
Ответить
СообщениеА где же ваш макрос, который вставляет все данные из текстового файла?

Автор - boa
Дата добавления - 21.11.2018 в 10:56
boa Дата: Среда, 21.11.2018, 10:57 | Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 549
Репутация: 167 ±
Замечаний: 0% ±

365
вот вам не понятный макрос по не понятному условию
[vba]
Код
Sub readtxt()
    Dim FileNameTxt$: FileNameTxt = "Полный путь к вашему текстовому файлу"
    Dim meData(), i&, sStr$
    Dim filenum&: filenum = FreeFile()
    Open FileNameTxt For Input As #filenum
        Do Until EOF(filenum)
            Line Input #filenum, sStr
            If InStr(1, sStr, "РАЗДЕЛИТЕЛЬ ТЕКСТА") Then 'если нашли строку то, что-то выполняем
                Do 'например, считываем в массив
                    Line Input #filenum, sStr
                    i = i + 1
                    ReDim Preserve meData(1 To i)
                    meData(i) = sStr
                    If EOF(filenum) Then GoTo ExitSub 'если конец файла, то выходим
                Loop While InStr(1, sStr, "РАЗДЕЛИТЕЛЬ ТЕКСТА") = 0 'находим следующее вхождение - выходим, а может вам что-то другое надо...
                i = i - 1
                ReDim Preserve meData(1 To i)
            End If
        Loop
ExitSub:
    Close #filenum
    ActiveSheet.Range(Cells(1, 1), Cells(UBound(meData), 1)) = Application.Transpose(meData)    'выводим массив на активный лист
End Sub
[/vba]




Сообщение отредактировал boa - Среда, 21.11.2018, 10:58
 
Ответить
Сообщениевот вам не понятный макрос по не понятному условию
[vba]
Код
Sub readtxt()
    Dim FileNameTxt$: FileNameTxt = "Полный путь к вашему текстовому файлу"
    Dim meData(), i&, sStr$
    Dim filenum&: filenum = FreeFile()
    Open FileNameTxt For Input As #filenum
        Do Until EOF(filenum)
            Line Input #filenum, sStr
            If InStr(1, sStr, "РАЗДЕЛИТЕЛЬ ТЕКСТА") Then 'если нашли строку то, что-то выполняем
                Do 'например, считываем в массив
                    Line Input #filenum, sStr
                    i = i + 1
                    ReDim Preserve meData(1 To i)
                    meData(i) = sStr
                    If EOF(filenum) Then GoTo ExitSub 'если конец файла, то выходим
                Loop While InStr(1, sStr, "РАЗДЕЛИТЕЛЬ ТЕКСТА") = 0 'находим следующее вхождение - выходим, а может вам что-то другое надо...
                i = i - 1
                ReDim Preserve meData(1 To i)
            End If
        Loop
ExitSub:
    Close #filenum
    ActiveSheet.Range(Cells(1, 1), Cells(UBound(meData), 1)) = Application.Transpose(meData)    'выводим массив на активный лист
End Sub
[/vba]

Автор - boa
Дата добавления - 21.11.2018 в 10:57
Бонифаций Дата: Среда, 21.11.2018, 17:44 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
boa, в вашем макросе получается, что выводится текст - который сейчас идет после первого попавшегося "разделителя".

А нужно - чтобы выводился текст, который идет после последнего встреченного "разделителя".
Последний текст в файле txt это:
К сообщению приложен файл: 8155756.xls (40.5 Kb)
 
Ответить
Сообщениеboa, в вашем макросе получается, что выводится текст - который сейчас идет после первого попавшегося "разделителя".

А нужно - чтобы выводился текст, который идет после последнего встреченного "разделителя".
Последний текст в файле txt это:

Автор - Бонифаций
Дата добавления - 21.11.2018 в 17:44
boa Дата: Среда, 21.11.2018, 18:03 | Сообщение № 6
Группа: Друзья
Ранг: Ветеран
Сообщений: 549
Репутация: 167 ±
Замечаний: 0% ±

365
Бонифаций,
Цитата Бонифаций, 21.11.2018 в 17:44, в сообщении № 5 ()
идет после последнего встреченного "разделителя".

так я ж и говорю, "по не понятному условию"
[vba]
Код
Sub readtxt()
    Dim FileNameTxt$: FileNameTxt = "Полный путь к вашему текстовому файлу"
    Dim meData(), i&, sStr$
    Dim filenum&: filenum = FreeFile()
    Open FileNameTxt For Input As #filenum
        Do Until EOF(filenum)
            Line Input #filenum, sStr
            If InStr(1, sStr, "РАЗДЕЛИТЕЛЬ ТЕКСТА") Then 'если нашли строку то, что-то выполняем
                Do 'например, считываем в массив
10                  Line Input #filenum, sStr
                    i = i + 1
                    ReDim Preserve meData(1 To i)
                    meData(i) = sStr
                    If EOF(filenum) Then GoTo ExitSub 'если конец файла, то выходим
                Loop While InStr(1, sStr, "РАЗДЕЛИТЕЛЬ ТЕКСТА") = 0 'находим следующее вхождение - выходим, а может вам что-то другое надо...
                i = 0
                ReDim meData(1 To 1)
                GoTo 10
            End If
        Loop
ExitSub:
    Close #filenum
    ActiveSheet.Range(Cells(1, 1), Cells(UBound(meData), 1)) = Application.Transpose(meData)    'выводим массив на активный лист
End Sub
[/vba]




Сообщение отредактировал boa - Среда, 21.11.2018, 18:04
 
Ответить
СообщениеБонифаций,
Цитата Бонифаций, 21.11.2018 в 17:44, в сообщении № 5 ()
идет после последнего встреченного "разделителя".

так я ж и говорю, "по не понятному условию"
[vba]
Код
Sub readtxt()
    Dim FileNameTxt$: FileNameTxt = "Полный путь к вашему текстовому файлу"
    Dim meData(), i&, sStr$
    Dim filenum&: filenum = FreeFile()
    Open FileNameTxt For Input As #filenum
        Do Until EOF(filenum)
            Line Input #filenum, sStr
            If InStr(1, sStr, "РАЗДЕЛИТЕЛЬ ТЕКСТА") Then 'если нашли строку то, что-то выполняем
                Do 'например, считываем в массив
10                  Line Input #filenum, sStr
                    i = i + 1
                    ReDim Preserve meData(1 To i)
                    meData(i) = sStr
                    If EOF(filenum) Then GoTo ExitSub 'если конец файла, то выходим
                Loop While InStr(1, sStr, "РАЗДЕЛИТЕЛЬ ТЕКСТА") = 0 'находим следующее вхождение - выходим, а может вам что-то другое надо...
                i = 0
                ReDim meData(1 To 1)
                GoTo 10
            End If
        Loop
ExitSub:
    Close #filenum
    ActiveSheet.Range(Cells(1, 1), Cells(UBound(meData), 1)) = Application.Transpose(meData)    'выводим массив на активный лист
End Sub
[/vba]

Автор - boa
Дата добавления - 21.11.2018 в 18:03
Бонифаций Дата: Среда, 21.11.2018, 18:47 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
boa, а вот теперь - все заработало !
Большое спасибо вам.
 
Ответить
Сообщениеboa, а вот теперь - все заработало !
Большое спасибо вам.

Автор - Бонифаций
Дата добавления - 21.11.2018 в 18:47
boa Дата: Среда, 21.11.2018, 20:48 | Сообщение № 8
Группа: Друзья
Ранг: Ветеран
Сообщений: 549
Репутация: 167 ±
Замечаний: 0% ±

365
Пожалуйста, Бонифаций
 
Ответить
СообщениеПожалуйста, Бонифаций

Автор - boa
Дата добавления - 21.11.2018 в 20:48
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Вставка содержимого txt - после конкретного слова (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!