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

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

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.02.2008, 12:02   #1
Xozer
Пользователь
 
Регистрация: 28.01.2008
Сообщений: 17
По умолчанию xls - txt. VBS

Мож не в ту тему написал, но в общем трабла такая рисую скрипт на vbs
входные данные - 15 и более xls документов нужно создать один txt с разделителем (в xls данные формата
Номер счёта
134516 199,5652
134517 79,2974
134518 102,4242
134519 2,4025
134520 85,0071
)
сделал построчно что то типа

Option Explicit
Dim XL,WshShell,fso,logOutputFile,t,t1, n,f,files,file
Set XL=WScript.CreateObject("Excel.Appl ication")
Set WshShell=WScript.CreateObject("WScr ipt.Shell")
Set fso = CreateObject("Scripting.FileSystemO bject")
Set OutputFile = fso.OpenTextFile(WshShell.CurrentDi rectory & "\test.txt", 8, True)
Set F = FSO.GetFolder(WshShell.CurrentDirec tory & "\ttt")
Set Files = F.Files
For Each File In Files
XL.Visible=false
XL.WorkBooks.open(File)
n = 2
Do While XL.Cells(n,1).Value > ""
t = XL.Cells(n,1).Value
t1 = XL.Cells(n,2).Value
n = n + 1
OutputFile.WriteLine t & " " & t1
Loop
xl.Workbooks(1).Close
xl.Quit

но это тьма времени уходит
подскажите плз как бы это дело побыстрее оформить, и сразу же ещё вопрос - после выполнения сего творения при открытии одного из этих документов он мгновенно закрывается - это из-за XL.Visible=false ?
кака избежать?
Xozer вне форума Ответить с цитированием
Старый 01.03.2008, 17:25   #2
knight
Дон Кихот
Форумчанин
 
Аватар для knight
 
Регистрация: 17.01.2008
Сообщений: 130
По умолчанию

Скопируй ячейки для экспорта во временный лист. Потом временный лист выгрузи экспортом SaveAs, где FileFormat = XlFileFormat.xlCSV.
Будет быстрее мне кажется...
knight вне форума Ответить с цитированием
Старый 03.03.2008, 11:29   #3
Xozer
Пользователь
 
Регистрация: 28.01.2008
Сообщений: 17
По умолчанию

Мда, спасибо разобрался почти со всем получилось что то типа
XL.Visible=false
set actBook = xl.Workbooks.open(File)
actBook.saveas Replace(File,"xls", "txt", 1, 1), 6
xl.activeworkbook.close false
xl.Quit
осталось тока пара трудностей на пример в первой строчке они мне сортировку устроили и она так же как текст сохраняется... да и в один файл приходиться отдельным скриптом сливать...
думаю над тем что б действительно требуемый диапазон во временный лист грузить тока вот сложность в том что диапазон всегда меняется и без перебора не знаю как нужный выбирать
спасибо за совет.)
Xozer вне форума Ответить с цитированием
Ответ


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