|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
27.01.2010, 09:31 | #1 |
Форумчанин
Регистрация: 02.07.2009
Сообщений: 122
|
считать txt с фильтром и записать в xls
Подскажите, профессионалы!
Требуется выборочно считать разнородные данные из первых строк текстового файла (причем число считываемых строк имеющейся в txt таблицы данных определяется цифрой из самого txt) и записать их в диапазон фиксированной длины книги excel, заменив при этом недостающие данные нулями и преобразовав разделители чисел в соответствии с пользовательским форматом (последнее не обязательно) Два варианта исходных txt и подробные инструкции - во вложении Пробовал Open...For Input As ... - что-то не потянуло -( М.б. ADO ?? Но тут не смог подобрать провайдера для txt и, соответственно, прочитать результат в Recordset (хотя с БД - без проблем) С уважением и надеждой, Алексей |
27.01.2010, 14:43 | #2 | |
Старожил
Регистрация: 02.05.2009
Сообщений: 3,907
|
Цитата:
Анализ,обработка данных Недорого
Последний раз редактировалось doober; 27.01.2010 в 14:46. |
|
28.01.2010, 08:57 | #3 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Можно проще (см. вложение).
Чем шире угол зрения, тем он тупее.
|
28.01.2010, 12:13 | #4 |
Форумчанин
Регистрация: 02.07.2009
Сообщений: 122
|
Спасибо большущее за оперативность и старания
Я вот вроде и старался внятно описать задачу, но все же, похоже, лоханулся. Самому-то все ясно, а как писать, так....Уж извините 1 Мне надо записать данные в существующий файл Data.xls (в котором, собственно, и должен быть макрос), расположенный в той же папке, что и текстовый файл с данными. Соответственно, FileDialog не нужен. Я этот файл добавил в папку(см. вложение). Диапазон для данных S!:S21. Поэтому OpenText сомнителен 2 Своими макросами из того же листа я этот диапазон использую и стираю (могу, конечно, и ставить нули). Для достоверности, при запуске макроса считывания лучше тоже этот диапазон либо очистить, либо проставить нули. 3 Все данные в текстовом файле - переменные, т.е. меняется не только количество строк данных в таблице, но и их значения, как и три последних цифры в номере установки. Не меняется структура текста, чтобы можно было в принципе выйти на нужные символы В файл WhatDo я внес эти пояснения Поэтому, Doober, извините, первый вариант не прошел, хотя там оказалась масса интересного для меня, надеюсь на продолжение Ваш вариант, SAS888 еще не успел глянуть, потороплюсь, спасибо! С уважением, Алексей |
28.01.2010, 12:33 | #5 |
Форумчанин
Регистрация: 02.07.2009
Сообщений: 122
|
Для SAS888
Спасибо, SAS888, все работает и понятно! FileDialog я и сам уберу...
Если Вас не слишком затруднит - можно ли аналогичный вариант *.vbs из той же папки? Заранее спасибо! |
28.01.2010, 16:11 | #6 |
Форумчанин
Регистрация: 02.07.2009
Сообщений: 122
|
SAS888 - еще раз спасибо!
Блестяще сделаны конструкции команд в MAIN - сам бы ввек не додумался! В качестве отчета во вложении доработанная под мои нужды программа и уже три примера *.txt - вдруг еще кому пригодится! Кстати, Ваша кнопка на листе 1 - как объект вставлена? Не мог до нее локопаться -( С уважением, Алексей |
29.01.2010, 13:21 | #7 |
Форумчанин
Регистрация: 02.07.2009
Сообщений: 122
|
Теперь насчет пользовательского формата
Реплика от doober: Кайфа не поймал,не понял где ловить...
Эта проблемка сохранилась, подскажите, если можете, решение Мне необходимо при считывании цифровых данных из *.txt сохранить при выводе в этикетки формы именно тот вид, который в текстовом файле. Т.е цифра 1,00 должна воспроизводиться как 1,00, а не 1 Для этого ее надо записать в файл xls как текст. В проге SAS888 (см. последнее вложение) я пробовал при вводе данных на лист заменить Val на Cstr, но это не помогло, преобразование текста в цифру где-то раньше произходит. У себя я использую п/п замены запятой на точку, если у пользователя разделитель - точка (опять таки только для вывода текста в этикетки, с цифрами-то проблем нет), примерно так: Sub SetSeparator() 'замена разделителя (запятой на точку) в параметрах для англ. версии Dim Nch As Integer, i As Integer, Number As String, ModNb As String If Application.International(xlDecimal Separator) = "." Then 'MsgBox "На данном компьютере сепаратор - точка!" With ThisWorkbook.Worksheets("calculater ").Range("S3") For Nch = 1 To N_CR * 3 Number = .Offset(Nch, 0) ModNb = "" For i = 1 To VBA.Len(Number) If Not VBA.Mid(Number, i, 1) = "," Then ModNb = ModNb & VBA.Mid(Number, i, 1) Else ModNb = ModNb & "." End If Next i .Offset(Nch, 0) = ModNb Next Nch End With End If End Sub Может и куце, но работает! Подскажите, пож! |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите перенести из txt в xls | max-tlt1 | Microsoft Office Excel | 3 | 08.01.2010 22:37 |
Как считать с txt? | GaNDyPaC | Общие вопросы Delphi | 20 | 16.01.2009 22:02 |
Как побайтно считать файл и записать в другой | SeRhy | Общие вопросы Delphi | 2 | 09.06.2008 21:54 |
xls - txt. VBS | Xozer | Свободное общение | 2 | 03.03.2008 11:29 |
Перевод прайсов фирм из TXT в XLS | Delphi_Manager | Фриланс | 2 | 13.02.2008 16:37 |