Страницы: 1
RSS
Экспорт макросом в TXT, макрос преобразующий заданный диапазон в текстовый файл
 
Всем привет.
Не могли бы Вы подсказать пример макроса для экспорта в текстовый файл?
Нашла в интернете пример того что надо, но немного не понятен принцип работы макроса...не хватает знаний его исправить..

Имею файл эксель, необходимо чтобы 2я строка экспортировалась в файл, файл в той же папке, с названием к примеру ResultExcel.txt чтобы данные из каждой ячейки были на новой строке:
11
22
33
44
и т.д...

Помогите пож-та..
 
И где тот пример?
 
Код
Sub ExportTextFile()

    Dim fso As Object
    Dim txt As Object
    Dim cell As Range
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    Set txt = fso.CreateTextFile("C:\ResultExcel.txt", True)
    For Each cell In Range("A2:O2")
        txt.WriteLine cell
    Next
    
    txt.Close
    Set txt = Nothing
    Set fso = Nothing
    
End Sub
There is no knowledge that is not power
 
Хотя вот - и разбирать нечего...

Код
Sub Экспорт()
    Open ThisWorkbook.Path & "\ResultExcel.txt" For Output As #1
    Print #1, Join(Application.Transpose(Application.Transpose([A2:O2].Value)), vbNewLine)
    Close #1
End Sub
 
Johny это то что нужно! Большое спасибо! Все просто и работает!
 
Hugo, спасибо, Ваш даже стабильнее работает! А подскажите пож-та как реализовать чтобы текст сохранялся в utf-8? спасибо
 
Два метода (поиск рулит ;))
http://planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=8&TID=28381&MID=248228#message248228
http://planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=8&TID=12928&MID=106710#message106710
 
какието там сложные методы ))
нашла вот этот, но там не сохраняет заданный диапазон..

 Dim ADOStream: Set ADOStream = CreateObject("ADODB.Stream")
 With ADOStream
   .Open
   .Charset = "utf-8"                    ' http://ru.wikipedia.org/wiki/Aeuoa?iaoeaiay_eiae?iaea
   .WriteText F
   .SaveToFile "\01.txt", 2     ' Ia?acaienaou, anee nouanoaoao
   .Close
 End With: Set ADOStream = Nothing
 
Есть вариант попроще:
Код
Sub Экспорт()
    With CreateObject("OlePrn.OleCvt.1")
        Open ThisWorkbook.Path & "\ResultExcel.txt" For Output As #1
        Print #1, .ToUtf8(Join(Application.Transpose(Application.Transpose([A2:O2].Value)), vbNewLine))
        Close #1
    End With
End Sub

Но сразу предупреждаю - под x64 виндой и Экселем работает криво...
Кстати - если кто знает вариант, как получить из "вася" "вася" под x64 - поделитесь, очень нужно.
Или абвг -> абвг
Может scriptcontrol с jscript привлечь? Вот только не нашёл кода..
Изменено: Hugo - 18.03.2013 23:50:13
 
Печалька! У меня как раз х64.. завтра попробую под х32..
Сейчас вылазят кракозябры..

Все равно большое спасибо!
 
Hugo, попробовала 2й макрос сохранять не в txt а в csv так он мне кажется в utf его не переводит, т.к другая программа которой нужен utf текст, не видит этот текст, пока этот CSV не с конвертируешь в UTF, или это только для тхт?
 
Создание текстовых файлов в UTF-8:
http://excelvba.ru/code/createtextfiles_utf8

Перекодировка текста, или готового текстового файла:
http://excelvba.ru/code/encode
 
Цитата
Margo101 пишет:
Hugo, попробовала 2й макрос сохранять не в txt а в csv так он мне кажется в utf его не переводит, т.к другая программа которой нужен utf текст, не видит этот текст, пока этот CSV не с конвертируешь в UTF, или это только для тхт?
Нет, разницы никакой нет - txt или csv.
Покажите файл с кодом - мы проверим.
 
Вот то что я писала про то что нашла сложные примеры в 1 посте это как раз то что выложил EducatedFool =))

EducatedFool попыталась переделать Ваш файл, опять ничего не получается, как заставить его заносить все данные из 15 строки, если в 13 и 14 указываю одинаковые данные? Т.к мне необходимо чтобы все формировалось в 1 файл... приложила файл prays




Hugo, гляньте мой csv, мой notepad++ говорит что файл в ansii хотя формируются кракозябры... у меня х64
кстати проверила на х32 тоже формируются кракозябры....
Изменено: Margo101 - 05.06.2013 00:02:03
 
У меня на х86 мой код создал ansi as utf8 (по мнению нотепада++)
 
странно, а не могли бы вы выложить, свой excel файл? я попробывала на х86 перебить слова по новой в таблице.... не помогает..
 
Я в Ваш prays (1).xls закинул код из поста выше и выполнил. Всё.
Думаю тут ещё играют роль кодовые страницы системы.

У меня например так:

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Nls\CodePage]
"1251"="c_1251.nls"
"1252"="c_1251.nls"

и ControlSet003 аналогично.
Но на х64 это не помогло...
Изменено: Hugo - 19.03.2013 12:33:55
 
ну на х86 у меня опять не прокатило, реестр чистый, при создании файла из прайса все равно пишет что ansii хотя вот ваш файлик определяется как надо...! ух уж этот excel  :o



PS махинации с реестром на х86 провела, рестарт, итого- ничего не помогло ((( все равно ansii
Изменено: Margo101 - 19.03.2013 12:47:47
 
UTF:
Set txt = fso.CreateTextFile("C:\ResultExcel.txt", True, True)
There is no knowledge that is not power
 
Johny большое спасибо! Сохраняет правда не в UTF а в UCS, но программа которой нужен этот файл теперь его читает и по русски =)

остался вопрос, как без указания директории сохранять файл?
пробывала Set txt = fso.CreateTextFile("\ResultExcel.txt", True, True) всё равно сохраняет на диск Ц
так Set txt = fso.CreateTextFile("ResultExcel.txt", True, True) один раз сохранил в директорию где была таблица, после чего сохранять отказался...
на гуглила Set ts = fso.CreateTextFile(Server.MapPath('data.txt'), True) но не прокатывает. это для asp
и всё что гуглила еще так же не работало...
 
Ну возьмите тогда из моего кода хоть ThisWorkbook.Path & :)
 
Всё вроде бы получила то что хотела, всем большое спасибо! Надо было учить vba когда мне это советовали, не послушала...  :|
 
Добрый день!
А подскажите пожалуйста как сделать так чтобы текущий лист в книге сохранялся в формате "Текстовые файлы (с разделителями табуляции) (*.txt)" в текстовый файл (задать имя этому файлу)  и сохранялся в той же папке что и файл экселя, ну или указать ему путь.
Прочитав эту ветку форума и др. http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=8&TID=14606&MID=122966#message122966 и http://excelvba.ru/Addins.html так и не смог сам себе помочь(((
рву волосы на себе от отчаянья...
Страницы: 1
Читают тему
Наверх