Нашел вариант получить желаемый результат, может кому то пригодится:
Всем спасибо за помощь
| Код |
|---|
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 |
Всем спасибо за помощь