Нашел вариант получить желаемый результат, может кому то пригодится:
Всем спасибо за помощь
Код |
---|
Sub Выгрузить() Set rb = ThisWorkbook.Worksheets("Задачи зафиксированные") Set ob = ThisWorkbook.Worksheets("Ошибки зафиксированные") Set rbi = ThisWorkbook.Worksheets("Задачи измененные") Set obi = ThisWorkbook.Worksheets("Ошибки измененные") Set wb = ThisWorkbook.Worksheets("Управление") Name = Format(wb.Cells(1, 1), "yyyy") & "-" & Format(wb.Cells(1, 1), "mm") Workbooks.Add ActiveWorkbook.SaveAs ("C:\Отчет по анализу задач " & Name & ".xlsx") Set pb = ActiveWorkbook Dim gb As Worksheet l = 1 For h = 2 To ob.Cells(1, 1).CurrentRegion.Rows.Count If ob.Cells(h, 13) <> "" Then n = ob.Cells(h, 4).Value Else GoTo EndFor1 'определяю имя листа On Error Resume Next 'определяю наличие листа с таким именем Set gb = Worksheets(n) If Err.Number <> 0 Then pb.Sheets.Add().Name = n 'если нет такого листа я его генерю Set gb = pb.Worksheets(n) Else Set gb = pb.Worksheets(n) 'Если есть лист я его переиспользую End If j = gb.Cells(1, 1).CurrentRegion.Rows.Count + 1 'определяю пустую строчку после заполненной в листе 'произвожу копирование данных по признаку ob.Cells(h, 1).Copy gb.Cells(j, 1) 'номер gb.Cells(j, 2) = ob.Cells(h, 2) ' описание Comment_Copy gb.Cells(j, 2), ob.Cells(h, 2) ' пояснение gb.Cells(j, 3) = ob.Cells(h, 3) ' тип gb.Cells(j, 4) = ob.Cells(h, 5) ' проект gb.Cells(j, 5) = ob.Cells(h, 6) ' стаиус gb.Cells(j, 6) = ob.Cells(h, 13) ' документация EndFor1: Next 'Закрываем файл ActiveWorkbook.Save ActiveWorkbook.Close End Sub |
Всем спасибо за помощь