Страница 1 из 2
Экспорт нескольких листов в .csv
Добавлено: 03 окт 2009, 19:48
Shamji
Нужно одним нажатием кнопки из 5 листов Excel, сделать 5 .csv(c именами страниц).Помогите, как это организовывать на Visual Basic ?
Re: Экспорт нескольких листов в .csv
Добавлено: 03 окт 2009, 21:20
Teslenko_EA
и снова здравствуйте Shamji.
требуется уточнение:
лист Excel имеет 256 колонок и 65536 строк, все они должны попасть в файл CSV?
пять листов - любые, первые пять или с заданным именем или номером?
Евгений.
Re: Экспорт нескольких листов в .csv
Добавлено: 04 окт 2009, 12:08
Shamji
Спасибо за предупреждение.
Если быть точным то экспорт из Excel с 5 листами(a,ws,wc,ms,mc) в 1 файл .csv
В каждом листе выбирать все колонки кроме последней, и все строки с информацией, кроме первой.
Очень надеюсь на Вашу помощь, Уважаемые Знатоки VB.
Re: Экспорт нескольких листов в .csv
Добавлено: 04 окт 2009, 15:55
Teslenko_EA
Здравствуйте
Shamji.
сначала Вы хотели "сделать 5" теперь "в 1 файл .csv", надо быстрее ответить пока ещё задача не сильно усложнилась.

подобный код поможет Вам в её решении
Код: Выделить всё
Sub toSVC()
Const sLst = "a^ws^wc^ms^mc" 'допустииые имена листов
Dim oS As Worksheet, i&, j%, g&, q%
For Each oS In Worksheets
If InStr(1, sLst, oS.Name) > 0 Then
i = oS.UsedRange.Rows.Count
j = oS.UsedRange.Columns.Count - 1
s = s + oS.Name + vbCrLf
If i > 1 Then
For g = 2 To i
For q = 1 To j
s = s + oS.Cells(g, q).Text + ";"
Next
s = s + vbCrLf
Next
End If
End If
Next
If Len(s) > 0 Then
Open "C:\1файл.csv" For Output As 1
Print #1, s
Close 1#
End If
End Sub
Евгений.
Re: Экспорт нескольких листов в .csv
Добавлено: 04 окт 2009, 16:57
Shamji
Спасибо за код, я создал пустой файл в дериктории с: , вставил код в MVB и запустил, 1 ядро - полная загрузки, и ничего не происходит. исходный файл -
http://d1232682.std90.hosting.ua/images ... g_csv.xlsm
Re: Экспорт нескольких листов в .csv
Добавлено: 04 окт 2009, 20:28
Teslenko_EA
и снова здравствуйте
Shamji.
присутствие проблем

, если компутер жужит - ядро загружено, о выключении безопасности
VBA речь не пойдет, возможно если
ОС Windows Vista она не даёт создать файл в корне системного диска, других причин я не вижу, т.к. присланный Вами файл создал у меня на диске С:
CSV.
процесс (жужание) проходил очень(!) долго слишком много пустых строк, "вычекнув" пустые строки из обработки выполнение прошло быстрее, но это
перебор ячеек, и он не может выполняться быстро по определению.
код не обрабатывающий пустые строки:
Код: Выделить всё
Sub toSVC()
Const sLst = "a^ws^wc^ms^mc" 'допустииые имена листов
Dim oS As Worksheet, i&, j%, g&, q%, o, sR As Range
For Each oS In Worksheets
Set o = Application.WorksheetFunction
If InStr(1, sLst, oS.Name) > 0 Then
i = oS.UsedRange.Rows.Count
j = oS.UsedRange.Columns.Count - 1
s = s + oS.Name + vbCrLf
sN = oS.Name
If i > 1 Then
For g = 2 To i
Set sR = Range(Cells(g, 1), Cells(g, j))
If o.CountA(sR) = 0 Then
Else
For q = 1 To j
s = s + oS.Cells(g, q).Text + ";"
Next
s = s + vbCrLf
End If
Next
End If
End If
Next
If Len(s) > 0 Then
Open "D:\cat.csv" For Output As 1
Print #1, s
Close 1#
End If
End Sub
Евгений.
Re: Экспорт нескольких листов в .csv
Добавлено: 05 окт 2009, 16:57
Shamji
Проверил, Все класс хоть и процессор грузит. только один нюанс: 1 строка CSV пустая , кроме первой ячейки(там "a"), по всей видимости вставляет название листа. А хотелось бы, хоть это и не указанно в первом посте (предпологалось это делать руками) вставить в первую строку csv - шапку(1 строку) из любого листа excel.
Re: Экспорт нескольких листов в .csv
Добавлено: 11 ноя 2009, 11:13
Shamji
Прошло больше месяца, никто не знает как доделать программу ?
Re: Экспорт нескольких листов в .csv
Добавлено: 11 ноя 2009, 20:11
Teslenko_EA
Здравствуйте
Shamji.
"Прошло больше месяца..." а Вам никак не удалось сообразить, что добавить строку заголовка можно добавив в начале кода строку:
s = "Поле1;Поле2;...ПолеN" + vbCrLf
плохо.

Евгений.
Re: Экспорт нескольких листов в .csv
Добавлено: 29 май 2010, 18:54
Shamji
спасибо за помощь.
перешел на новый хостинг. необходиммо создавать .csv в кодировке utf-8 вместо windows-1251.
пробовал с использованием пользовательских функций модернизировать скрипт, но результат = 0.
посоветуйте, что нужно изменить в коде чтобы сохраняло .csv в кодировке utf-8