Автор: 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()?