Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2011, 20:36   #1
sha69
 
Регистрация: 13.09.2011
Сообщений: 7
По умолчанию заезженное старое, но оч надо

ДОбрый вечер, я нашла много топов для переноса таблицы из формата txt в файл excel, но получается все в одном столбце а если брать

Sub openTxtFile()
Const sTxtFile = "C:\TextFileName.txt"
Workbooks.OpenText Filename:=sTxtFile, DataType:=xlDelimited, Comma:=True
End Sub

то получается вроде и не в одном столбце, но все равно все съезжает в разные стороны, можно ли как нибудь сделать так, чтоб именно столбец в столбец шла таблица? ( столбец А:номер счета по кредиту, столбец В:количество (шт)) и т.д.)
Возможно такое сотворить?((((
Вложения
Тип файла: txt 0161.txt (9.2 Кб, 170 просмотров)
sha69 вне форума Ответить с цитированием
Старый 18.11.2011, 05:32   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

http://excelvba.ru/code/CSV2Excel

Попробуйте, вдруг поможет.
EducatedFool вне форума Ответить с цитированием
Старый 18.11.2011, 12:04   #3
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Вам надо примерно так извлекать таблицу
ssl-это считанная строка
Код:
 Sub Get_Row()
ssl = "|20202810513000100161     |        62|   Российский рубль|              |   12775019.80|"
s1 = Mid(ssl, 2, 25)
s2 = Mid(ssl, 28, 10)
s3 = Mid(ssl, 39, 19)
s4 = Mid(ssl, 59, 14)
s5 = Mid(ssl, 74, 12)
End Sub
Анализ,обработка данных Недорого

Последний раз редактировалось doober; 18.11.2011 в 12:45.
doober вне форума Ответить с цитированием
Старый 18.11.2011, 13:32   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Ещё - обвесить это Trim()'ом, чтоб убрать лишние пробелы, извлекать только нужные строки, анализируя на IsNumeric() и непусто пару/тройку символов после "|" (если такой символ первый), при выгрузке сперва задать первому столбцу листа текстовый формат, а последнему 0.00 (чтоб нули не пропали).
Ещё возможно нужно определить системный десятичный разделитель и заменить на него точку в суммах до выгрузки на лист.
Примеры такие были, я точно похожее делал.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 18.11.2011, 14:27   #5
nerv
Форумчанин
 
Аватар для nerv
 
Регистрация: 26.04.2010
Сообщений: 450
По умолчанию

Данные, текст по столбцам, разделитель "|". Найти "три пробела", Заменить "Пусто".
Тишина – самый громкий звук
nerv вне форума Ответить с цитированием
Старый 19.11.2011, 02:06   #6
R Dmitry
Форумчанин
 
Регистрация: 07.03.2010
Сообщений: 796
По умолчанию

Цитата:
Сообщение от sha69 Посмотреть сообщение
ДОбрый вечер, я нашла много топов для переноса таблицы из формата txt в файл excel, но получается все в одном столбце а если брать

Sub openTxtFile()
Const sTxtFile = "C:\TextFileName.txt"
Workbooks.OpenText Filename:=sTxtFile, DataType:=xlDelimited, Comma:=True
End Sub

то получается вроде и не в одном столбце, но все равно все съезжает в разные стороны, можно ли как нибудь сделать так, чтоб именно столбец в столбец шла таблица? ( столбец А:номер счета по кредиту, столбец В:количество (шт)) и т.д.)
Возможно такое сотворить?((((
легкий путь

Код:
Sub sha69()
    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;D:\0161.txt", Destination:=[a1])
        .Name = "0161"
        .PreserveFormatting = True
        .AdjustColumnWidth = True
        .TextFilePlatform = 1251
        .TextFileStartRow = 16
        .TextFileParseType = xlFixedWidth
        .TextFileColumnDataTypes = Array(9, 2, 9, 1, 9, 1, 9, 1, 9, 1, 9)
        .TextFileFixedColumnWidths = Array(1, 20, 6, 10, 1, 19, 1, 14, 1, 14)
        .TextFileDecimalSeparator = "."
        .Refresh BackgroundQuery:=False
        .Delete
    End With
End Sub

второй способ более сложный:
создаем Schema.ini можно программно , можно и руками, и запросом получаем нужные данные очищенные от постороннего мусора
запрос такого рода:

Код:
SELECT Imp.F2, Imp.F4, Imp.F6, Imp.F8, Imp.F10
FROM (SELECT * FROM 0161#txt IN 'D:\' 'text;') as Imp
WHERE [Imp].F10=True

Schema.ini

Код:
[0161.txt]
ColNameHeader=False
Format=FixedLength
CharacterSet=ANSI
DecimalSymbol=.
Col1=F1 Text Width 1 
Col2=F2 Text Width 20 
Col3=F3 Text Width 6 
Col4=F4 Text Width 10 
Col5=F5 Text Width 1 
Col6=F6 Text Width 19 
Col7=F7 Text Width 1 
Col8=F8 Text Width 14 
Col9=F9 Text Width 1 
Col10=F10 Double Width 14 
Col11=F11 Text Width 44
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234

Последний раз редактировалось R Dmitry; 19.11.2011 в 02:40. Причина: добавил схему
R Dmitry вне форума Ответить с цитированием
Старый 19.11.2011, 04:55   #7
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

sha69, какой нужен в итоге результат - нужны ли все строки, или только с счетами/суммами, нужна ли шапка, дата справки?
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 20.11.2011, 14:15   #8
sha69
 
Регистрация: 13.09.2011
Сообщений: 7
По умолчанию

нужна шапка, нужно все с файла txt, чтобы в экселе была именно такая таблица, потом еще в итоге нескольких таких таблиц нужно будет получить сумму отдельно по валюте РФ, валюте доллар сша и евро..
R Dmitry: спасибо большое, сейчас попробую)
sha69 вне форума Ответить с цитированием
Старый 20.11.2011, 15:12   #9
sha69
 
Регистрация: 13.09.2011
Сообщений: 7
По умолчанию

получилось столбец в столбец,правда без шапки ноя о ней не говорила в самом начале, спасибо огромное R_Dmitry
а можно сделать так, как я написала в предыдущем посте?
Вложения
Тип файла: rar files.rar (44.5 Кб, 18 просмотров)
sha69 вне форума Ответить с цитированием
Старый 23.11.2011, 20:31   #10
sha69
 
Регистрация: 13.09.2011
Сообщений: 7
По умолчанию

это нельзя сделать?(((((
sha69 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вернуть старое разрешение экрана при критическом завершении программы? Asker13 Общие вопросы Delphi 4 11.05.2011 20:05
SOS Надо написать код в С++ ( есть образец, надо переделать просто!) Беата Общие вопросы C/C++ 9 08.12.2010 22:13
И куда же спихнуть свое старое железо?О_о CodeExpert Свободное общение 12 30.10.2010 00:02
Заменить старое значение на новое D.O.G БД в Delphi 11 01.09.2010 09:46