Стоит задача - импортировать в excel данные из текста. Но структура текста такова, что данные идут не построчно, а блоками, вот грубый пример (реально все сложнее)
======================= 1.2.2000 Пушкин счет 32452345 кредит 245245 описание1
======================= 3.4.2004 Лермонтов счет 32452345 кредит 243246 описание221
======================= 3.5.2004 Тютчев счет 32452345 кредит 2452455 описание3331
Замечу по теме - есть вариант переложить скриптом из одного текста в другой с разделителями vbTab и с расширением xls. Такой текст откроется корректно в Экселе для ручной дальнейшей обработки. Я часто этот приём использую для быстрой выборки из текстовых отчётов именно нужной информации. Например, кусок кода (писал вроде для этого форума для Бухгалтер777) :
'# пишем новый сводный текстовый файл с нетекстовым расширением :) Set objFile = objFSO.OpenTextFile("C:\temp\Бухгалтер777\svod.xls", ForAppending) 'сперва заголовок objFile.WriteLine "Номер старый" & vbTab & "Дата" & vbTab & "Номер новый" 'а затем и данные из заполненной части массива For x = 0 To y objFile.WriteLine arr2(x, 0) & vbTab & arr2(x, 1) & vbTab & arr2(x, 2) Next objFile.Close
> группировка блоков в одном текстовом файле может быть по датам или по клиентам
это несколько усложняет макрос - придётся, по сути, писать 2 макроса. Могу сделать, но не бесплатно. (работы много) Если готовы заплатить - обращайтесь, контакты в подписи.
Пример можно переделать - алгоритм похожий. Но тут есть другой ход - попробуйте переименовать эти тексты в xls :) Хотя строгой системы нет, но что-то сделать уже можно.
Попробуйте copy /b *.txt all.xls открываете полученный файл, ставите автофильтр по фамилиям. Кое-где косяки есть, но в общем можно вручную подправить. Может больше ничего городить и не надо?
{quote}{login=Hugo}{date=04.11.2010 11:36}{thema=}{post}Пример можно переделать - алгоритм похожий.{/post}{/quote} Вряд ли под эти текстовые файлы можно переделать другое решение...
Слишком много "мусора" - лишних символов, да и 2 разных типа файлов надо обрабатывать. Тут надо писать макрос "с нуля"
А переименование файлов в XLS ничего не решит - хоть файлы и будут открываться в Excel, ситуацию это не улучшит - ибо результат будет весьма далек от желаемой таблицы.
Ну уж не так сильно далёк. Два типа кода - это да. Для агентов надо кодом добавить столбец, куда расплодить фамилии, для дат аналогично даты. Потом выбрать автофильтром, подправить мусор вручную. Такой вот полуавтомат. Или надо всё 100% кодом сделать?
Я планирую такой путь: 1. собираем все файлы агентов в один txt-xls, файлы дат в другой. 2. в файле-обработчике пишем два простых похожих кода по добавлению колонки с фамилиями/датами. По нажатию кнопки обрабатываем один из типов файлов. 3. в файле-обработчике пишем код по подчистке мусора - удаление ненужных строк, сдвиге косяков на место. Исполняем после п.2. 4. сохраняем результат как законный xls кодом или вручную. 5. по желанию можно слить файлы вместе на текстовом этапе (после п.3) или как слияние xls.
Дальше: после добавления в файл "Список по агентам.txt.xls" колонки "A" для фамилий
Sub ChngNames() Dim cc As Range, nm As String
For Each cc In Intersect(ActiveSheet.Columns(2), ActiveSheet.UsedRange) If nm = "" Then If cc.Value <> "" Then nm = cc.Value Else If UCase(Trim(cc.Value)) = "ВСЕГО" Then nm = "" cc.Offset(, -1) = nm End If Next End Sub
Теперь можно циклом по "A" удалить строки с пусто.