2014-11-07 5 views
0

У меня есть книга со многими рабочими листами. Я хотел бы сохранить как двухстраничные PDF-файлы, где первая страница - это рабочий лист 1, а вторая страница - Worksheets 2-x. В настоящее время мой код позволяет мне сохранять отдельные PDF-файлы для каждого рабочего листа в книге. Мне интересно, что добавить к нему, чтобы заставить это сделать это. Может ли кто-нибудь поделиться советами?Excel VBA для сохранения выбранных листов в формате PDF

Спасибо!

Option Explicit 

Sub createPDFfiles() 
Dim ws As Worksheet 
Dim Fname As String 
For Each ws In ActiveWorkbook.Worksheets 
    On Error Resume Next 

    Fname = "C:\Folder\" & ws.Name & "Report" & Format(Date, "yyyy-mm-dd") & ".pdf" 

    ws.ExportAsFixedFormat _ 
     Type:=xlTypePDF, _ 
     Filename:=Fname, _ 
     Quality:=xlQualityStandard, _ 
     IncludeDocProperties:=True, _ 
     IgnorePrintAreas:=False 
Next ws 
End Sub 
+0

Какую версию Excel вы используете? –

+0

Должен был изложить - извините. Я на Excel 2007. – Andrew

+0

Вы имели в виду, что вы хотите, чтобы первый лист в одном файле и остальные листы во втором файле? – bernie

ответ

0

Вы перечислите листы и сделаете сохранение в этом цикле. Вот почему вы получаете один PDF-файл на листе. Попробуйте использовать только рабочую книгу вместо ActiveWorkbook.Worksheets.

+0

Спасибо за ответ - уточнить, я ищу несколько двухстраничных PDF-файлов. (Worksheet1 + Worksheet2), (Worksheet1 + Worksheet3), (Worksheet1 + Worksheet4) и т. д. – Andrew

+0

ОК, супер быстрый подталкивание в общем направлении, попробуйте выбрать рабочий лист 1 + текущий рабочий лист в вашем цикле и затем выполнить экспорт. Я не могу вспомнить с головы, но это, вероятно, будет что-то вроде 'с selected.worksheets .. Выберите Worksheet1 ...' – gwhenning

0

Gah. Он все время смотрел мне в лицо. Я изменил код, чтобы включить выделение, и назвал второй лист ws.Name. Окончательный сценарий выглядит так:

Option Explicit 

    Sub createPDFfiles() 
    Dim ws As Worksheet 
    Dim Fname As String 
    For Each ws In ActiveWorkbook.Worksheets 
     On Error Resume Next 

     Fname = "C:\Folder\" & ws.Name & "Report" & Format(Date, "yyyy-mm-dd") & ".pdf" 

     Sheets(Array("Sheet1", ws.Name)).Select 

    ActiveSheet.ExportAsFixedFormat _ 
      Type:=xlTypePDF, _ 
      Filename:=Fname, _ 
      Quality:=xlQualityStandard, _ 
      IncludeDocProperties:=True, _ 
      IgnorePrintAreas:=False 
    Next ws 
End Sub 

Спасибо за помощь!