Excel VBA печать групп вкладок в PDF

excel vba печать группы вкладок из эксель с помощью vba Чем сложнее отчет в экселе, и чем больше вкладок, тем утомительнее процесс печати. Особенно если надо распечать несколько вкладок из списка в определенном порядке. Каждый раз выбирать одну за другой вкладки в интерфейсе, когда их счет идет на десятки, — утомительно. Однако небольшой vba скрипт поможет решить проблему печати группы вкладок из Экселя.

Скрипт решает следующую задачу —  выбирает все листы в открытом эксель файле с именами согласно заданному списку и публикует в виде pdf файла с заданным именем.

 

Excel VBA код для экспорта вкладок в PDF


Private Sub CommandButton_Click()
 Dim wksAllSheetsT3 As Variant
 Dim wksSheet1 As Worksheet
 Dim strFilename As String, strFilepath As String
 Set wksSheet1 = Sheets("Sheet 1")'надо указать имя первой вкладки из списка
wksAllSheetsT3 = Array( _
"Sheet 1", "Sheet 2", "Sheet 3", " Sheet 4" _
)'Список вкладок через запятую
Sheets(wksAllSheetsT3).Select 'Выбираем все вкладки из списка
 'И публикуем их в виде pdf документа
wksSheet1.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:="C:\PDF_reports\test.pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True
wksSheet1.Select 'сбрасываем выборку.
End Sub

Источником вдохновения послужила публикация:
https://danwagner.co/how-do-i-save-multiple-sheets-as-a-single-pdf/

Исходный код я укоротил, и добавил комментарии. Как видно из названия функции — она повешена на кнопку. Не большая форма с кнопок может сильно сократить затраты времени необходимые для печати вкладок.

Одно замечание, порядок вкладок в списке на самом деле не имеет никакого принципиального значения. Вкладки будут выведены на печать в той последовательности в которой они существуют в excel файле.

Эксель печатаем вкладки по одной VBA

Если хоте вывести страницы на печать в том порядке, что задан списком, стоит испол цикл. Иллюстрирует процесс следующий код. Наши две команды тут завернуты в цикл. А чтобы файлы в процессе экспорта не перепутались — пронумеруем каждый файл снабдим именем вкладки.

'Сохраняем вкладки по одной в цикле
For i = 0 To 27
 'обновляем выбор первой вкладки
 Set wksSheet1 = Sheets(wksAllSheets(i))
 'Выводим вкладки по одной, заодно нумеруем их
wksSheet1.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:="C:\PDF_report\" & i & "_" & wksAllSheets(i) & ".pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True
Next i

После можно, с помощью бесплатной программы PDF Split&Merge, соединить все выходные файлы в один.