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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.06.2011, 23:46   #1
KARUSHEV
Форумчанин
 
Аватар для KARUSHEV
 
Регистрация: 11.01.2009
Сообщений: 102
Восклицание Экспорт из Excel в txt

Всем привет!

Помогите подправить код:

Код:
Sub Макрос1()

Const defPath = "c:\temp\"  'Путь к папке для сохранения
Dim fileSaveName, rr As Range, n As Integer, i As Integer
If Dir(defPath, vbDirectory) = "" Then MkDir defPath
ChDir defPath
fileSaveName = Application.GetSaveAsFilename(Replace(ActiveWorkbook.Name, ".xls", ""), _
    "Text Files (*.txt), *.txt", , " ")
If fileSaveName <> False Then
    Open fileSaveName For Output As #1
    For Each rr In ActiveSheet.UsedRange.Rows
        n = rr.Cells.Count
        For i = 1 To n - 1
            Print #1, rr.Cells(i).Text; vbTab;
        Next
        Print #1, rr.Cells(n)
    Next
Close #1
End If
End Sub
Нужно, чтобы путь к папке для сохранения, был таким же как у исходного Excel файла и название txt файла такое же, как у Excel файла.
KARUSHEV вне форума Ответить с цитированием
Старый 20.06.2011, 00:25   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Можно так
Код:
Path = Replace(ThisWorkbook.FullName, ".xls", ".txt")

Path = Replace(ActiveWorkbook.FullName, ".xls", ".txt")
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 20.06.2011, 02:12   #3
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Нужно, чтобы путь к папке для сохранения, был таким же как у исходного Excel файла и название txt файла такое же, как у Excel файла.
А зачем тогда запрашивать название?
И можно обойтись без вложенного цикла, хотя это не будет быстрее:
Код:
Sub Макрос1()

Dim fn$, rr As Range
fn = ActiveWorkbook.FullName
fn = Left$(fn, InStrRev(fn, ".")) & "txt"
Open fn For Output As #1
For Each rr In ActiveSheet.UsedRange.Rows
    Print #1, Join(Application.Transpose(Application.Transpose(rr.Value)), vbTab)
Next
Close #1
End Sub
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 20.06.2011, 02:30   #4
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Кстати, а почему бы просто не сохранить книгу как txt?
Запишите макрорекордером это действие.
Результат, конечно, может быть немного другим - если Usedrange не начинается с А1 или если строки имеют разную длину. Но, может, это неважно?
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 20.06.2011, 11:00   #5
KARUSHEV
Форумчанин
 
Аватар для KARUSHEV
 
Регистрация: 11.01.2009
Сообщений: 102
По умолчанию

Выдает ошибку: "run-time error '13' type mismatch". У меня языковые стандарты и форматы Английский-Великобритания, пробовал менять на Русский, та же ошибка.

Не работает эта строка:
Код:
    Print #1, Join(Application.Transpose(Application.Transpose(rr.Value)), vbTab)

Последний раз редактировалось KARUSHEV; 20.06.2011 в 11:04.
KARUSHEV вне форума Ответить с цитированием
Старый 20.06.2011, 13:19   #6
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Видимо, текст в ячейках длиннее 256 символов.
Все, я разочаровался в этом методе
А сохранять книгу или лист как TXT не пробовали?
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 20.06.2011, 13:42   #7
KARUSHEV
Форумчанин
 
Аватар для KARUSHEV
 
Регистрация: 11.01.2009
Сообщений: 102
По умолчанию

Пробовал этот макрос в новом файле, забивал в один столбец цифры. Может скините свой файл Excel с работающим макросом?

Хочу сделать в листе кнопочку SaveAsTxt, чтобы в итоге у меня сохранялся лист, на котором расположена кнопка в файл TXT, с названием книги и в ту же папку. Надоедает делать одни и те же действия, поэтому и хочу такой макрос

Последний раз редактировалось KARUSHEV; 20.06.2011 в 13:50.
KARUSHEV вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Экспорт данных *.txt Cyril Microsoft Office Excel 4 27.01.2011 01:30
импорт данных из excel в txt и из txt в excel ESV Microsoft Office Excel 3 19.11.2010 10:29
импорт из txt, работа с массивом данных, экспорт в txt Danara Microsoft Office Excel 4 31.03.2010 00:26
Excel VBA, Экспорт в txt, кодировка файла UTF-16 LE/UCS-2 Little Endian+еще один интересный вопрос Maxximus Microsoft Office Excel 17 04.09.2009 20:03
Экспорт из Access в Excel, Экспорт из отчётов в таблицу Excel Kissedbythegod Microsoft Office Access 1 31.05.2008 22:15