Можно как-то автоматизировать печать выборочных листов Excel?
Модератор: Naeel Maqsudov
Мне надо Excel печатать несколько разных листов в книге в многолистовой книге. Инструментом печати это возможно, только выделив группу с помощью клавиши CTRL. Это для меня неудобно, так как каждый раз при печати приходится их выделять заново. Скрывать непечатаемые листы также неудобно, потому что их затем нужно опять отображать. В Word и OpenOffice.org Calc существует такая возможность, указывая необходимые листы через запятую (пробел). В OpenOffice.org Calc я набираю на отдельном листе номера листов для печати и затем копирую их и отправляю на двухсторонюю печать на дуплексный принтер. Это очень удобно, так как не нужно каждый раз вводить нужные листы для печати. В Excel же только возможно указать диапазон.
Можно как-то автоматизировать печать выборочных листов Excel, какой нибудь макрос или ещё что?
Можно как-то автоматизировать печать выборочных листов Excel, какой нибудь макрос или ещё что?
- Busine2009
- Сообщения: 322
- Зарегистрирован: 18 июл 2009, 15:34
- Контактная информация:
ZSFoS
а как ты хочешь указывать листы? По их порядковому номеру? Ты будешь их подсчитывать что ли?
Вопрос в том, как ты собираешься создать Группу с помощью Макроса.
Т.е. в книге ты печатаешь одну и ту же группу?
а как ты хочешь указывать листы? По их порядковому номеру? Ты будешь их подсчитывать что ли?
Вопрос в том, как ты собираешься создать Группу с помощью Макроса.
Т.е. в книге ты печатаешь одну и ту же группу?
В OpenOffice.org Calc во время предварительного просмотра я создаю один или несколько наборов для печати в виде: 1 3 5 6 11 14 26 35, 1 3 5 6 11 14 26 36 41. номера я записываю на отдельном листе.Busine2009 писал(а):ZSFoS
а как ты хочешь указывать листы? По их порядковому номеру? Ты будешь их подсчитывать что ли?
Вопрос в том, как ты собираешься создать Группу с помощью Макроса.
Затем, когда мне нужно быстро распечатать нужную комбинацию я её копирую через буфер обмена в печать и сразу распечатывается то, что надо.
в одном случае одну, в другом другую.Т.е. в книге ты печатаешь одну и ту же группу?
Можно попробовать так. Предварительно создаем на каком-нибудь листе именованный диапазон "Печать", в него будем записывать номера листов, которые надо распечатать.
Sub ПечатьЛистов()
Dim cell As Range, pr As Integer
For Each cell In Range("Печать")
If cell.Value > 0 Then
pr = cell.Value
If СуществЛист(pr) = False Then
MsgBox "Листа " & pr & " не существует", , "Печать"
GoTo act1
Else
ActiveWorkbook.Sheets(pr).Activate
MsgBox "Печатаем лист " & pr, , "Печать"
ActiveWorkbook.Sheets(pr).PrintOut
End If
Else
Exit For
End If
act1:
Next cell
End Sub
Private Function СуществЛист(index) As Boolean
Dim x As Object
On Error Resume Next
Set x = ActiveWorkbook.Sheets(index)
If Err.Number = 0 Then
СуществЛист = True
Else
СуществЛист = False
End If
End Function
Ненужные MsgBox можно закомментировать.
Sub ПечатьЛистов()
Dim cell As Range, pr As Integer
For Each cell In Range("Печать")
If cell.Value > 0 Then
pr = cell.Value
If СуществЛист(pr) = False Then
MsgBox "Листа " & pr & " не существует", , "Печать"
GoTo act1
Else
ActiveWorkbook.Sheets(pr).Activate
MsgBox "Печатаем лист " & pr, , "Печать"
ActiveWorkbook.Sheets(pr).PrintOut
End If
Else
Exit For
End If
act1:
Next cell
End Sub
Private Function СуществЛист(index) As Boolean
Dim x As Object
On Error Resume Next
Set x = ActiveWorkbook.Sheets(index)
If Err.Number = 0 Then
СуществЛист = True
Else
СуществЛист = False
End If
End Function
Ненужные MsgBox можно закомментировать.
- Busine2009
- Сообщения: 322
- Зарегистрирован: 18 июл 2009, 15:34
- Контактная информация:
ZSFoS
у меня появляется просвет. Могу предложить вариант, в котором надо будет вводить числа через запятые - через пробелы нельзя. Пойдёт так?
у меня появляется просвет. Могу предложить вариант, в котором надо будет вводить числа через запятые - через пробелы нельзя. Пойдёт так?
- Busine2009
- Сообщения: 322
- Зарегистрирован: 18 июл 2009, 15:34
- Контактная информация:
ZSFoS
вот состряпал. Смысл этого макроса в том, что он выделяет листы, которые надо распечатать, затем появляется диалоговое окно "Печать" и тебе надо нажать Окей.
вот состряпал. Смысл этого макроса в том, что он выделяет листы, которые надо распечатать, затем появляется диалоговое окно "Печать" и тебе надо нажать Окей.
- Вложения
-
- Print Excel.zip
- (1.73 КБ) 62 скачивания
через запятую хорошо, но я не знаю что с этими файлами делать, как их запускать? у меня Microsoft Excel 2010 (Beta), макросами еще не пользовался,Busine2009 писал(а):ZSFoS
вот состряпал. Смысл этого макроса в том, что он выделяет листы, которые надо распечатать, затем появляется диалоговое окно "Печать" и тебе надо нажать Окей.
не смог разобраться как этот макрос запустить, выложите образец листа с этим диапазоном если не трудноnilem писал(а):Можно попробовать так. Предварительно создаем на каком-нибудь листе именованный диапазон "Печать", в него будем записывать номера листов, которые надо распечатать.
Sub ПечатьЛистов()
Dim cell As Range, pr As Integer
For Each cell In Range("Печать")
If cell.Value > 0 Then
pr = cell.Value
If СуществЛист(pr) = False Then
MsgBox "Листа " & pr & " не существует", , "Печать"
GoTo act1
Else
ActiveWorkbook.Sheets(pr).Activate
MsgBox "Печатаем лист " & pr, , "Печать"
ActiveWorkbook.Sheets(pr).PrintOut
End If
Else
Exit For
End If
act1:
Next cell
End Sub
Private Function СуществЛист(index) As Boolean
Dim x As Object
On Error Resume Next
Set x = ActiveWorkbook.Sheets(index)
If Err.Number = 0 Then
СуществЛист = True
Else
СуществЛист = False
End If
End Function
Ненужные MsgBox можно закомментировать.
Этот код вставьте в модуль в VBE, щелкните где-нибудь в теле процедуры Sub ПечатьЛистов() и нажмите F5. Предварительно создайте на каком-нибудь листе именованный диапазон "Печать" с номерами листов для печати.
Разобрался как импортировать в VBA эти файлы. Только не печатает, дошёл до этого окна: (рис. 1)Busine2009 писал(а):ZSFoS
вот состряпал. Смысл этого макроса в том, что он выделяет листы, которые надо распечатать, затем появляется диалоговое окно "Печать" и тебе надо нажать Окей.
Затем двойной клик на печать и появляется это (рис.2)
Что дальше?