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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.04.2010, 18:25   #1
igoryava
 
Регистрация: 16.04.2010
Сообщений: 4
Смущение Выгрузка из Эксель в текстовый документ без разделителей...

Вобщем есть макрос, который берет ДБФ-файл, вытягивает оттуда таблицу в Эксель и с Экселя сохраняет файл в текстовый. Когда открываю полученый текстовый файл (в Фаре), то разделителем столбцов(бывших) являеться Таб. Как сделать так, чтоб при экспорте в текстовый формат строчки были без разделителей (т.е. чтоб были одни пробелы)????

Думаю собака порылась где-то здесь))):

If (OptionButton1.Value = True) Then
TextBox6.Text = ComboBox1.Text + " за " + ComboBox2.Text + " мiсяць " + Str(DTPicker2.Year) + " року"
UserForm1.CommonDialog1.Filename = UserForm1.TextBox5.Text
Workbooks.Open Filename:=UserForm1.CommonDialog1.F ilename
A1 = Trim(UserForm1.CommonDialog1.Filena me)
a2 = Len(A1)
i = a2
fr = True
While (fr)
If (i <> 0) Then
a3 = Left(A1, i)
If (Mid(a3, Len(a3)) = ".") Then
a4 = Len(a3)
ElseIf (Mid(a3, Len(a3)) = "\") Then
a5 = Len(a3)
fr = False
End If
i = i - 1
Else
fr = False
End If
Wend
a6 = Mid(A1, a5 + 1, a4 - 1 - a5)
Sheets(a6).Select
fr = True
i = 2
k = "F" + Trim(Str(i))
While (fr)
If (Range(k).Text <> "") Then
A1 = Range(k).Text * 100
Range(k).Value = A1
Range(k).Select
Selection.NumberFormat = "0"
i = i + 1
k = "F" + Trim(Str(i))
Else
fr = False
End If
igoryava вне форума Ответить с цитированием
Старый 20.04.2010, 05:24   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
есть макрос, который берет ДБФ-файл, вытягивает оттуда таблицу в Эксель и с Экселя сохраняет файл в текстовый.
Прикрепите исходный dbf-файл (фрагмент) и текстовый файл, который Вы желаете из него получить (без всяких преобразований данных).
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 20.04.2010, 14:44   #3
igoryava
 
Регистрация: 16.04.2010
Сообщений: 4
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Прикрепите исходный dbf-файл (фрагмент) и текстовый файл, который Вы желаете из него получить (без всяких преобразований данных).
Прикрепляю dbf файл, и 2 текстовых файла. Один, который получаеться в результате выполнения макроса, а второй - то что я хочу получить (edit)...
Вложения
Тип файла: rar files.rar (795 байт, 31 просмотров)
igoryava вне форума Ответить с цитированием
Старый 21.04.2010, 05:50   #4
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Предлагаю макрос, который преобразует текстовый файл, заменив табуляцию на пробелы.
Код:
Sub ConvTxt()
    Dim myPath As String, myName As String, x As String, ts
    myPath = "D:\Temp\" 'Путь к файлу
    myName = "80010201.txt" 'Имя файла
    Set ts = CreateObject("Scripting.FileSystemObject").OpenTextFile(myPath & myName, 1)
    x = ts.ReadAll: x = Application.Trim(Replace(x, Chr(9), " ")): ts.Close
    Set ts = CreateObject("Scripting.FileSystemObject").OpenTextFile(myPath & myName, 2, True)
    ts.Write x: ts.Close
End Sub
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 21.04.2010, 16:48   #5
igoryava
 
Регистрация: 16.04.2010
Сообщений: 4
По умолчанию

Так а можно его вставить в мой макрос, или его надо выполнять отдельно?
igoryava вне форума Ответить с цитированием
Старый 22.04.2010, 05:27   #6
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Если лист Excel требуется сохранить в формате txt, то для того, чтобы преобразовать разделители столбцов (tab) в пробелы, потребуется формировать каждую текстовую строку и записывать в txt-файл построчно, либо формировать эту строку, перебирая столбцы, строки, ячейки. Что долго и утомительно (даже для макроса).
Предлагаю после того, как Вы сохранили txt-файл, следующей строкой кода запускать предложенный мной макрос, в который передавать 2 параметра: myPath и myName. Для этого, имя макроса заменить на
Код:
Sub ConvTxt(myPath As String, myName As String)
а строку кода, определяющую тип переменных - закомментировать.
После этого, запускать макрос из Вашего кода можно, например, так:
Код:
ConvTxt "D:\Temp\", "80010201.txt"
где вместо указанных явно значений могут быть строковые переменные.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 28.04.2010, 16:53   #7
igoryava
 
Регистрация: 16.04.2010
Сообщений: 4
По умолчанию

И еще... Я макрос запускаю на Win2000 SP4, а на ХР работает так, как надо...Что это может быть?
igoryava вне форума Ответить с цитированием
Старый 30.06.2010, 10:43   #8
Zhiltsov
Пользователь
 
Аватар для Zhiltsov
 
Регистрация: 04.06.2009
Сообщений: 56
По умолчанию

У меня похожая проблема.
С помощью макросов в таблицу подгружаются данные из текстовых файлов, там обрабатываются и формируется таблица. Эту таблицу нужно сохранить в текстовый(как я понимаю) файл, требования которые выдвигает разработчик софта в который будет данный файл подгружаться следующие: "в качестве разделителя полей используется – символ с HEX кодом «10» , в качестве раделителя записей символ с HEX кодом «0A»"
Вышеуказанный код помогает заменить разделители пробелами, а как заменить символами по HEX коду?
Еще желательно бы в конце (как в Example.dat) добавить контрольную сумму CRC16 всех строчек данных(я даже боюсь представить что это такое)

Для меня это китайская грамота, может поможете разобраться.
Во вложении архив. В нем файл таблица - как она формируется после обработки, файл Example.dat - то что должно получиться(прислано разработчиками софта) и файл Compas.dat то как сохраняется сейчас.
Вложения
Тип файла: rar Compas.rar (12.1 Кб, 10 просмотров)
Zhiltsov вне форума Ответить с цитированием
Старый 01.07.2010, 01:20   #9
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Во вложении подсчет контрольной суммы CRC16 и CRC 32.И макрос по формированию файла dat.Пробовал несколько алгоритмов CRC16 ,сумма с разработчиком не совпала.У вас с ними должен быть один алгоритм подсчета ее.


символ с HEX кодом «0A» Chr(10)
символ с HEX кодом «10» Chr(16)
Вложения
Тип файла: rar Compas.rar (16.7 Кб, 34 просмотров)
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 07.07.2010, 13:24   #10
Zhiltsov
Пользователь
 
Аватар для Zhiltsov
 
Регистрация: 04.06.2009
Сообщений: 56
По умолчанию

Уважаемый doober, спасибо что отреагировали на мое письмо, пытался запустить макросы в вашем файле - ничего не происходит, файл не формируется, с чем это может быть связано?
По поводу CRC не могу третий день связаться с разработчиками, если абстрагироваться от CRC и сделать только формирование DAT файла с разделителями, то как это может выглядеть? Я тут пытался воспользоваться решением выше, но не пойму каким символом начинается новая строка, т.е. табуляцию меняю на символ с кодом DEC 16, но тогда и в конце строк тот же символ встает,а как сделать чтобы в конце строки вставал символ с кодом DEC 10?
Zhiltsov вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как откомпилировать текстовый документ Vitalyir84 Общие вопросы Delphi 9 15.02.2010 23:07
имена файлов в текстовый документ Mobile™ Операционные системы общие вопросы 7 02.11.2009 23:41
Вставка картинок в текстовый документ PONKA Общие вопросы Delphi 0 04.02.2009 12:54
Как с помощью Delphi открыть/сохранить/удалить текстовый документ SeRhy Помощь студентам 4 02.11.2007 20:27
Ввод даты без разделителей (311007) avtor101 Microsoft Office Excel 1 31.10.2007 19:57