Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Печать листов по цвету ярлыков
 
Здравствуйте!
Пытаюсь сварганить макрос для печати листов по определенному цвету ярлыков. Пока что с помощью поиска сварганил следущее:
Код
Sub ColorSheet()
For i = 1 To Sheets.Count
If Sheets(i).Tab.ColorIndex = 13 Then Sheets(i).PrintOut From:=1, To:=Sheets(i).PageSetup.Pages.Count
Next
End Sub
Однако я хочу, чтоб листы выделялись по цвету и вызывалось окно печати выделенных листов. Пытался сварганить, но не работает:
Код
Sub ColorSheetDialog()
Dim sh As Worksheet
For Each sh In ActiveWorkbook.Worksheets
If sh.Tab.ColorIndex = 13 Then sh.Select False
Next sh
Application.Dialogs(xlDialogPrint).Show
End Sub
Что тут надо подправить, не подскажите? Спасибо.
 
У меня сработало (Excel2007 рус). Можно немного поправить, чтобы в группу листов не попадал текущий лист:
Код
Sub ColorSheetDialog()
Dim sh As Worksheet, firstSh As Boolean
firstSh = True
For Each sh In ActiveWorkbook.Worksheets
  If sh.Tab.ColorIndex = 13 Then sh.Select firstSh: firstSh = False
Next sh
Application.Dialogs(xlDialogPrint).Show
End Sub
 
Нашел по-итогу в качестве примера следующий макрос и подправил для себя:
Код
Sub SelectSheetsPrint()
    Dim a() As Integer, i As Integer, j As Integer
    ReDim a(1 To Sheets.Count) 
    j = 0 
        For i = 1 To Sheets.Count 
        If Sheets(i).Tab.ColorIndex = Sheets("Образец").Tab.ColorIndex Then
            j = j + 1 
            a(j) = Sheets(i).Index 
        End If
    Next
    ReDim Preserve a(1 To j) 
    Sheets(a).Select 
    Application.Dialogs(xlDialogPrint).Show
    Sheets("Оглавление").Select
End Sub
 
И столкнулся с проблемами:
1. из-за отличий в кодах цвета в разных версиях Excel (в 2007 желтый - 13, в 2010 - 6), пришлось привязаться к конкретному листу.
2. Если скрыт хотя бы один "цветной" лист - то вылетает ошибка, хотелось бы сделать так, чтобы он не брал скрытые листы...
 
Код
If Sheets(i).Tab.ColorIndex = Sheets("Образец").Tab.ColorIndex And Sheets(i).Visible = False Then
Кому решение нужно - тот пример и рисует.
 
Цитата
nerubian написал: из-за отличий в кодах цвета в разных версиях Excel
Проверяйте тогда так: если цвет ярлычка <> xlNone, то это нужный лист)) Т.е., будут обработаны все листы, которые покрашены в ЛЮБОЙ цвет, а те, что без краски - нет..
Страницы: 1
Читают тему (гостей: 1)