Я довольно зеленый с использованием VBA, и это первый раз, когда я опубликовал вопрос на этом форуме, так что несите меня, если я нарушаю правила публикации.Сохраните несколько рабочих листов в формате PDF
Ниже приведен фрагмент кода, который используется для печати/сохранения 1 или более листов из книги Excel в PDF. Он отлично работает, если данные из каждого листа, который я экспортирую, помещаются на одну страницу. Проблема, которую я нахожу, состоит в том, что если диапазон данных с моего первого листа больше 1 страницы, тогда будет экспортироваться только 1-й рабочий лист и только до первого разрыва страницы. Любые советы или предложения о том, как я могу решить эту проблему?
'Ask user if report needs to be saved as a pdf
PdfCheck = MsgBox("Save report as PDF", vbYesNo, "Save PDF")
'use result of <PdfCheck> to control if statement
If PdfCheck = vbYes Then
Pdfsheets = InputBox("How many worksheets would you like to include in PDF")
'Prints the number of sheets entered by user
'starts at first ACTIVE Worksheet to the result of <Pdfsheets>
ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
"C:\Users\" & WinName & "\Documents\REPORTING\" & Database & "\" & _
ReportYear & "\" & FolderMonth & "\" & Database & "-" & Title & "-" & FileDate _
, Quality:=xlQualityStandard, IncludeDocProperties:=False, _
IgnorePrintAreas:=False, From:=1, To:=Pdfsheets, OpenAfterPublish:=True
Else
GoTo X
End If
X:
End Sub
* просто примечание стороны: * не нужно для 'Else GoTo X' и' X: 'в этом коде, так как' If ... End If' является достаточным. –
удалите 'From: = 1, To: = Pdfsheets,' - зачем ограничивать, какие страницы печатаются? – SeanC
Я думаю, вам может понадобиться использовать 'ExportAsFixedFormat' для каждого листа. Поэтому, если пользователи хотят напечатать 2 листа, при условии, что они являются листами 1 и 2, вы можете написать «Worksheets (Array (1,2)). Выберите ActiveSheet.ExportAsFixedFormat ....' Не уверен, что это ответ, но он хотел предоставить возможность. –