Автор: cio_new
Дата сообщения: 27.03.2009 13:52
ПРивет!
Есть задачка: существует книга ексель с листами, каждый из которых разделен на 2 области. В одной области вводится значение (например, в одну ячейку - ФИО, во вторую - Отдел и т.д.), во второй области эти значения стандартизируются (приводятся к верхнему регистру, усекаются и т.д.).
Существует кнопка, при нажатии на которую (после заполнения листов информацией) все листы книги разносятся по определенным директориям и сохраняются там в виде отдельных ексель файлов с одним конкретным листом.
Вопрос: необходим макрос, который будет помимо формирования ексель файлов делать ЦСВ файл с разделителями, но сохранять в него ТОЛЬКО данные из второй области каждого листа.
ВБА вижу 2-й раз в жизни 8)
Вот что смог сделать:
With Worksheets(sTab).Range("a1:ea2") ' определяем начало второй области
Set c = .Find("start cell", LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address()
End If
End With
With Worksheets(sTab).Range("a5:ea200") ' ищем окончание области для выделения
Set cc = .Find("end cell", LookIn:=xlValues, LookAt:=xlWhole, SearchDirection:=xlPrevious)
If Not cc Is Nothing Then
lastAddress = cc.Address()
Do
Set cc = .FindNext(cc)
Loop While Not cc Is Nothing And cc.Address <> lastAddress
End If
End With
Range(firstAddress, lastAddress).Select
Sheets(sTab).Select
Sheets(sTab).Copy
ActiveWorkbook.SaveAs Filename:= _
sPath & "\" & sTab & " v1.0.xls", _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
ActiveWorkbook.Close (True)
Этот пример сохраняет отдельный лист в отдельный файл, но оставляет все содержимое листа и просто выделяет вторую область, вместо того, что бы сформировать лист и вставить в него диапазон Range(firstAddress, lastAddress).
Как это сделать средствами ВБА?? Знаю, что здесь не хватает самую малость, но не могу найти (или не правильно применяю) эти функции 8(
ЗЫ: Если прописывать
Range(firstAddress, lastAddress).Select
Range(firstAddress, lastAddress).Copy
то книга просто копируется в первую директорию.
Чего тут не хватает (ну не знаю я ВБА, изучить - времени нет 8()?