Страницы: 1
RSS
Экспорт в текстовый файл
 
При экспорте листа эксель в текстовый файл с разделителями табуляцией (нужно только так) происходит бардак. Большая часть значений получается в кавычках. Экспорт делаю с помощью простого макроса (два макроса точнее, текущий лист и все листы книги). При экспорте файла вручную "Сохранить как..." этого нет. Непонятно что это такое. Этот текстовый файл потом как база данных для другой программы используется, и наличие кавычек нежелательно, а побороть не могу эту напасть. И форматирование удалял и чего только не пытался сделать... самое непонятное, что некоторые значения без кавычек получаются, системы никакой не заметил, почему так, верней вроде есть, где есть запятая, там запись берётся в кавычки, НО при тех же самых условиях, но с сохранением в ручную, нет этих кавычек! (пробовал писать процесс сохранения макрорекордером, в файле нет кавычек, после запуска записанного макроса есть кавычки) Может кто знает откуда это всё берётся? Файл Экселя (исходник) и текстовый файл прилагаю.
Изменено: FlintFD - 23.03.2014 20:06:28
 
В команду сохранения добавьте local:=true
Код
 ActiveWorkbook.SaveAs wb.Path & "\" & s.Name & ".txt", FileFormat:=xlText, _
        CreateBackup:=False, local:=True 'сохраняем файл 
 
Спасибо, работает. Региональные настройки оказывается виноваты  :) , нда... Теперь другая забота, программа которая потом считывает базу данных, в качестве разделителя десятичной дроби запятую не принимает  :) . Принудительная замена запятой на точку, перед сохранением, эффекта не даёт, в цифрах всё равно запятая в текстовом файле. Всё равно не понятно, почему при ручном сохранении всё пучком (все запятые на месте, кавычек нет, точки взамен запятых в цифрах появляются) а макросом где нибудь да подковырка.
С такими делами придётся удалять из текстового файла кавычки вручную, но из 10+ файлов (у меня их уже около 50) ну очень муторное занятие... в добавок эти базы планируется обновлять частенько, не дело однако это.
Изменено: FlintFD - 23.03.2014 21:08:48
 
Так не годится?

Код
    For Each s In wb.Worksheets                                'проходим во всем листам активной книги
        s.Copy
        With ActiveSheet.UsedRange.Columns(1)
            .Replace What:=",", Replacement:=".", LookAt:=xlPart, _
                     SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
                     ReplaceFormat:=False
        End With
        'сохраняем лист как новый файл
        ActiveWorkbook.SaveAs wb.Path & "\" & s.Name & ".txt", FileFormat:=xlText, _
                              CreateBackup:=False, local:=True  'сохраняем файл
        ActiveWorkbook.Close
    Next
 
 
Так все цифровые данные в нули превращает.
 
Доброе время суток.
Тогда код в "лоб".
Скрытый текст

Успехов
 
Здравствуйте все!
Я сейчас как раз интересуюсь точно этой же темой. Скопировал макрос, но в тхт-шном файле (при импорте из экселя текстовой информации) появляются кавычки и запятые после каждой импортированной ячейки. Подскажите, пожалуйста, как сделать так чтоб не было кавычек?
Изменено: MaksExcel - 20.04.2014 02:04:47
 
Доброе время суток.
Цитата
Скопировал макрос
Который из них?
 
FlintFD!

В VB 2003 "без затей" форматы:
1. Текстовые файлы (с разделителями табуляции) (*.TXT)
2. Текст Юникод (*.TXT)
распрекрасно-хорошо делают все, что Вам нужно.
P.S.
Предварительно в макросе в нужных Вам столбах:
Код
    Columns("A:E" ).Select
    Selection.Replace What:=",", Replacement:=".", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
Изменено: Мотя - 21.04.2014 03:47:55
 
Цитата
FlintFD пишет:
Так все цифровые данные в нули превращает.
но у меня месяц назад думаю всё было нормально....
 
Ваш, anvg. Который "код в лоб". Всё работает, но вот если чуть подправить можно было - было б идеально!..
 
MaksExcel, не могли бы вы приложить пример файла, что-то с трудом верится, что код добавляет кавычки. Или в вашем файле присутствуют кавычки в текстовых значениях ячеек?
 
У меня вся фишка в том была, что в значениях должны были быть и запятые и точки. При разных вариантах имеем или все точки, или где были запятые кавычки. В общем бардак. куда это всё потом вставляется тупо не умеет считать цифры с запятыми. Т.е. Имеем наименование (марку) КСПВ-3х2,5   именно так и должно быть написано в последующей спецификации, но для того чтоб посчитать падение напряжения на скажем 10 м кабеля, нам надо уже чтоб попало в этот же файл не 2,5 а 2.5 (много разных значений ещё, масса, удельное сопротивление и т.д), намучился в общем, следующая программа иногда просто переставала воспринимать файлы текстовые, структура ломалась. Плюнул в общем на это безобразие, с кавычками экспортировал, а потом средствами следующей программы программы убираю кавычки и всё в красивом виде куда надо ставится (пришлось правдо дополнительную переменную мудрить), и считает всё нормально. Ещё фишку экселя заметил при конвертации, если внутри одной ячейки был сделан принудительный перенос, то туда тоже кавычка вставляется, вся база конкретно лететь начинает...
 
Вот они файлы... Ничего не выдумываю - вот так и работает. Хотел скриншот прилепить, но не вышло,
 
MaksExcel!
Ваши строчки:
Если  1.5 то 2 до состояния 3 и еще прицепим текст АЛЬФА;
Если  2.5 то 2 до состояния 3 и еще прицепим текст АЛЬФА;
Если  0.5 то 2 до состояния 3 и еще прицепим текст АЛЬФА;
- формулы.
Если Вы вместо формул с помощью специальной вставки вставите значения "из-под" этих формул, у Вас все будет распрекрасно-хорошо.  :)
 
Мотя, здравствуйте! Мне неловко сказать, но, возможно, я не понял что Вы имели в виду... Вставить содержимое ячеек А5:А7 как текст в другие ячейки и экспортировать их? Если это, то увы, результат тот же.
Пожалуй мне всё же стоит уточнить смысл сего действия:
1. есть программа, которая передает значения в эксель,
2. эксель проводит манипуляции с полученными значениями и выдает результат в виде текста и значений (через формулу "=сцепить(...)" ;)  и
3. экспортирует в тхт,
4. которого уже читает первоначальная программа-экспортер.
Я стремлюсь максимально автоматизировать этот процесс, чтоб не отвлекаться на него постоянно. Соответственно ручное копирование сведет на нет весь смысл. Да и лишние знаки, к сожалению, остаются...

P.S. Да и вот еще. Офис у меня 2010. Не знаю имеет ли это значение, но мало ли...
Изменено: MaksExcel - 22.04.2014 00:28:16
 
Cм.
 
Мотя, спасибо!! Кавычки ушли, запятых в конце строк нет, работает! Остались 2 момента: злополучные кавычки появляются если экспортируется дробное число; и между строками в тхт добавляется пустая строка.
Но я, надеюсь, это не критично.
Завтра протестирую - отпишусь.
 
Здравствуйте, уважаемые участники!
Мотя, благодарю Вас за отличное решение! Оно работает абсолютно верно! Прога, считывающая тхт файл восприняла его как родного! Не нахожу раздел типа "Репутация", иначе плюсанул бы Вам от души. Спасибо большое!

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