Страницы: 1
RSS
Удалить кодом все листы в книге кроме зарезервированных (нужных)
 
Здравствуйте уважаемые Форумчане!  
Возникла необходимость кодом удалить все листы из книги кроме «зарезервированных (нужных)», то есть допустим в книге есть 3 «зарезервированных» листа  «База; Отчёт1; Отчёт2» и любое другое кол-во не зарезервированных (не нужных) листов с неизвестными нам пока именами.  
Прошу подсказать код, который прошурудит и удалит все листы из книги, кроме зарезервированных.  
P.S. Просьба появилась из-за неумелого обращения со сводными таблицами удаленных коллег (как известно при двойном щелчке в области данных каждый раз создаётся лист с выборкой) Прислали сейчас файл, где наплодили 25 листов...  
Спасибо.
 
Покрасьте ярлычки нужных 3-х листов в какой-либо цвет (например, зелёный),  
а потом запустите этот макрос:  
 
Sub test()  
   On Error Resume Next  
   Dim sh As Worksheet: Application.ScreenUpdating = False  
   Application.DisplayAlerts = False  
   For Each sh In ThisWorkbook.Worksheets  
       If sh.Tab.ColorIndex = xlColorIndexNone Then sh.Delete  
   Next sh  
   Application.DisplayAlerts = True  
End Sub  
 
Все листы с бесцветными ярлычками будут удалены.
 
Ув. EducatedFool, спасибо большое - то что нужно.
 
Можно сделать так, чтобы макрос сам находил ненужные листы по названию, которое лист или диаграмма получает по умолчанию:  
 
Sub Удалить_листы()  
Dim arSh() As String, i As Integer, sh As Object  
ReDim arSh(Sheets.Count)  
For Each sh In Sheets  
   If sh.Name Like "Лист*" Or sh.Name Like "Диаграмма*" Then  
       arSh(i) = sh.Name  
       i = i + 1  
   End If  
Next  
If i = 0 Or i = Sheets.Count Then Exit Sub  
ReDim Preserve arSh(i - 1)  
Sheets(arSh).Select  
If MsgBox("Удалить выделенные листы?", vbExclamation + vbOKCancel) = vbOK Then  
   Application.DisplayAlerts = False  
   Sheets(arSh).Delete  
   Application.DisplayAlerts = True  
End If  
End Sub
Страницы: 1
Читают тему
Наверх