Страницы: 1
RSS
Макрос печати листов из книги по списку имен
 
Здравствуйте, уважаемые знатоки. Прошу помощи, бьюсь над решением уже который день, не хватает опыта разобраться.
Задача - на основании списка имен листов на листе "Список" в колонке C отправить на печать соответствующие листы. Отправить их по очереди получается, отправить все разом никак. Содержимое листов значения не имеет, сделал пример "на коленке".
При перечислении листов в явном виде макрос конечно работает:
Код
    Sheets(Array("А", "Б", "Г", "Е")).PrintOut Preview:=True
Даже такая нелепая попытка была
Код
Sub prSh()
    Dim prSh As String

    prSh = prSh & IIf(Range("C2").Value <> "", IIf(prSh = "", "", ", ") & Range("C2").Value, "")
    prSh = prSh & IIf(Range("C3").Value <> "", IIf(prSh = "", "", ", ") & Range("C3").Value, "")
    prSh = prSh & IIf(Range("C4").Value <> "", IIf(prSh = "", "", ", ") & Range("C4").Value, "")
    prSh = prSh & IIf(Range("C5").Value <> "", IIf(prSh = "", "", ", ") & Range("C5").Value, "")
    prSh = prSh & IIf(Range("C6").Value <> "", IIf(prSh = "", "", ", ") & Range("C6").Value, "")
    prSh = prSh & IIf(Range("C7").Value <> "", IIf(prSh = "", "", ", ") & Range("C7").Value, "")
    
    If Not prSh = "" Then Application.Sheets(Array(prSh)).PrintOut Preview:=True
    
End Sub
И даже попытка сцепить имена листов в отдельной ячейке и вставить значение этой ячейки в тело макроса ((.
Но я явно не понимаю как корректно задать диапазон именно для листов, всё заканчивается ошибкой.

Буду безмерно благодарен любому работающему варианту
Изменено: Дмитрий - 11.08.2022 21:37:57
 
Код
Sub PrintShts()
  Dim s$, r&
  r = Cells(Rows.Count, 3).End(xlUp).Row
  For r = 2 To r: s = s & " " & Cells(r, 3): Next
  s = Trim(s)
  Do While InStr(s, "  "): s = Replace(s, "  ", " "): Loop
  Sheets(Split(s)).PrintOut Preview:=True
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, Спасибо большое! Очень красиво, но ничего не понятно  :D  Главное, что работает.
Перенес код в свою книгу и опять вылезла ошибка. Метод научного тыка показал что проблема из-за пробела в названии одного из листов 8)
Хочу надеяться, что какой-то из моих способов тоже был рабочий)
Страницы: 1
Наверх