Страницы: 1
RSS
Из txt -> xls и обратно, Как избежать рутины перевода форматов
 
Доброго времени суток всем.
В прикрепленном файле, 1 строка показывает вид импортированных данных из txt файла.
2 строка показывает, во что он превращается в итоге многих тыков в разные места и становятся пригодными для обработки.

Есть интерес, чтобы это делалось кардинально меньшим числом тыков. А потом, еще и умело превращаться в изначальный вид. В txt с | разделителем.
Выделил нужное, жамк по волшебной кнопке "превратить выделенное" и сразу все красиво.
Не факт, что приходится возвращать данные в файл.txt из которого взято. Чаще, это пишется сначала в xls и отправляется в txt. А потом, в какой-то момент, возникает необходимость внести глобальную правку...

Вот тут-то пляски и начинаются.

Сможет ли кто из мастеров, оказать содействие?
Я даже согласен заключить сделку со мздоимцем.
Если, конечно, не сильно обезжиривать станет.
 
Цитата
fint пишет:
в итоге многих тыков в разные места
"текст по столбцам" - "с разделителями" - указать свой разделитель - готово
вы про эти "многие тыки"?
или у вас своя метода?
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Эти-эти. Там еще надо формат задавать текстовой. А-то цены в даты превращаются. Прозеваешь - топись.
 
эээ... а макрорекодер вам отключили?
правда, при непостоянном числе столбцов записанный им макрос надо будет хорошенько подредактировать.
Цитата
fint пишет:
Я даже согласен заключить сделку со мздоимцем
как по мне - в данном случае деньги можно брать только за некоторую муторность работы и решение "под ключ". чтоб уж вам совсем не задумываться.
принципиально же задача простая. и решений для подобных задач в инете пруд пруди.
Изменено: ikki - 10.02.2013 12:16:10
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Цитата
fint пишет: Я даже согласен заключить сделку со мздоимцем.
Если, конечно, не сильно обезжиривать станет.
Придется, вам, fint, наверное, больше на свои силы полагаться после таких заявлений;
или в другой раздел податься - http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=list&FID=7;
или попробовать свои телодвижения записать рекордером;
или настырнее поискать решения HUGO и других планетян по импорту/экспорту txt...
ps Когда же ремонт форума пройдет/закончится: пока писал тут столько мыслей накидали... ;)
Изменено: Z - 10.02.2013 12:27:08
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
 
Цитата
эээ... а макрорекодер вам отключили?
А это ЧО?
Число столбцов вообще-то постоянное A-X
А, вот строки, по разному бывает.
 
Цитата
А это ЧО?
Что такое макрос и где его искать?


Цитата
А, вот строки, по разному бывает.
Как определить последнюю ячейку на листе через VBA?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Я тут по нажимал на какие-то кнопки, и получилось это:
Код
Sub проба()
'
' проба Макрос
'

'
    Cells.Select
    Selection.NumberFormat = "@"
    Range("A1").Select
    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;C:\-------\db_index.txt" _
        , Destination:=Range("$A$1"))
        .Name = "db_index"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 1251
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierNone
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileOtherDelimiter = "|"
        .TextFileColumnDataTypes = Array(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, _
        2, 2, 2, 2, 2, 2)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
    Columns("A:A").ColumnWidth = 9.71
End Sub


Судя по всему, я записал макрос 8)  

Ладно, справился, пойду, возьму с полки пирожок.

Только не понятно, а как теперь все вернуть как было?
Ведь при сохранении в txt, я могу указать только табуляцию. А потом ее придется менять на | средствами блокнота.
А хочется-то, чтоб лениво было. чтобы бац-бац и в дамках.
 
Я бы делал иначе - чтение например так:

Код
Set fso = CreateObject("Scripting.FileSystemObject")

Set ts = fso.OpenTextFile("c:\Temp\текст.txt", 1)    'Подставьте свой путь к txt-файлу
arrstr = Split(ts.ReadAll, vbCrLf)    'массив строк текста целиком
ts.Close


Имеем массив строк, который можно в цикле переложить в другой массив разбивая на поля, или сразу аналогично на лист выгрузить.
На листе заранее нужно нужным столбцам задать нужный формат (вот такая тавтология :))

Выгружать в текст обратная операция - собираем строку листа в строку текста с помощью join, далее строки пишем сразу в файл или собираем аналогично в массив, затем его пишем в файл (смотря какие объёмы).
Страницы: 1
Наверх