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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.12.2010, 09:05   #1
evdss
Пользователь
 
Регистрация: 12.10.2010
Сообщений: 66
По умолчанию из excel экспортировать в текстовые файлы

подскажите пожалуйста как из excel экспортировать в текстовые файлы каждый лист книги с именами 1.txt,2.txt и т.д. очень много листов


SaveTXTfile "c:\install\tanya\1.txt", Range("a10:a34)
это не работает

Function SaveTXTfile(ByVal filename As String, ByVal txt As String) As Boolean
On Error Resume Next: Err.Clear
Set fso = CreateObject("scripting.filesystemo bject")
Set ts = fso.CreateTextFile(filename, True)
ts.Write txt: ts.Close
SaveTXTfile = Err = 0
Set ts = Nothing: Set fso = Nothing
End Function
evdss вне форума Ответить с цитированием
Старый 23.12.2010, 09:22   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Используем эту функцию: http://excelvba.ru/code/Range2TXT

Код будет выглядеть так:
SaveTXTfile "c:\install\tanya\1.txt", Range2TXT(Range("a10:a34"), "; ", vbLf)

Есть вариант попроще:
1) перебираем все листы в цикле
Код:
Sub test()
    Dim sh As Worksheet
    For Each sh In ThisWorkbook.Worksheets
        
    Next sh
End Sub
2) каждый лист копируем в новую книгу: sh.copy
3) сохраняем эту книгу в формате txt
activeworkbook.saveas ...
4) закрываем книгу: activeworkbook.close false
EducatedFool вне форума Ответить с цитированием
Старый 23.12.2010, 11:00   #3
evdss
Пользователь
 
Регистрация: 12.10.2010
Сообщений: 66
По умолчанию

спасибо большое только вот с файлами не получается сохранить их как 1.txt,2.txt,3.txt
Sub EachSheet()
For Each sh In ThisWorkbook.Worksheets
Dim sh1 As Worksheet: Set sh1 = Workbooks.Add.Worksheets(1)
sh1.Range("A10:B34").Value = sh.Range("A10:B34").Value
n = n + 1
SaveTXTfile "c:\install\tanya\n.txt", Range2TXT(Range("a10:a34"), "; ", vbLf)
ActiveWorkbook.Close False
Next sh
End Sub
evdss вне форума Ответить с цитированием
Старый 23.12.2010, 11:26   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

А если так попробовать?

Код:
Sub EachSheet()
    Dim sh As Worksheet: n = 0
    For Each sh In ThisWorkbook.Worksheets
        n = n + 1
        SaveTXTfile "c:\install\tanya\" & n & ".txt", Range2TXT(sh.Range("a10:a34"), "; ", vbLf)
    Next sh
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 23.12.2010, 12:11   #5
evdss
Пользователь
 
Регистрация: 12.10.2010
Сообщений: 66
По умолчанию

сделала так, но вустраивает больше ваш вариант, спасибо большое
Sub EachSheet()
For Each sh In ThisWorkbook.Worksheets
Dim sh1 As Worksheet: Set sh1 = Workbooks.Add.Worksheets(1)
sh1.Range("A10:B34").Value = sh.Range("A10:B34").Value
ActiveWorkbook.SaveAs FileFormat:= _
xlCSV, CreateBackup:=False
ActiveWorkbook.Close False
Next sh
End Sub
evdss вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Текстовые файлы C++ :( DragoonSki Помощь студентам 0 29.05.2010 14:24
Как средствами VBA экспортировать данные из Excel в Word? Pavel_Ine Microsoft Office Excel 3 20.04.2009 14:14
Экспортировать TStringGrid в Excel-файл SeЯgey Помощь студентам 2 30.04.2008 15:21