Salva più fogli in .pdf

Ho un foglio di lavoro per i rapporti che raccoglie alcuni dati da un database e forma tre fogli di informazioni di report di riepilogo. Voglio eseguire automaticamente il foglio di calcolo dalla riga di comando e farlo salvare automaticamente tutti e tre i fogli di reporting come file PDF.

All’inizio ho pensato che avrei potuto fare una macro VBA sul foglio facendo una serie di “stampa come PDF”, ma che richiede una finestra di dialogo intertriggers intermedia per specificare il nome del file di output. Quindi trovo che posso solo salvare come pdf, e la macro può impostare il nome del file di output. Tuttavia questo crea tre file separati, e devo poi metterli insieme esternamente per unirli.

(È strano che salva come pdf salva solo un foglio, dove altre modalità di salvataggio sembrano salvare l’intera cartella di lavoro).

Sì, ci sono strumenti per unire i tre file in seguito, ma voglio sapere se c’è un modo semplice per far sì che Excel salvi insieme più fogli come un unico file pdf.

Ora stampo con una serie di cose come:

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, ... 

Potrei fare invece una singola istruzione qualcosa come (pseudo-codice):

 ThisWorkbook.Sheets(1,2,3,4).ExportAsFixedFormat Type:=xlTypePDF, ... 

Inizia selezionando i fogli che vuoi combinare:

 ThisWorkbook.Sheets(Array("Sheet1", "Sheet2")).Select ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ "C:\tempo.pdf", Quality:= xlQualityStandard, IncludeDocProperties:=True, _ IgnorePrintAreas:=False, OpenAfterPublish:=True 

Simile alla risposta di Tim – ma con un controllo per il 2007 (in cui l’esportazione PDF non è installata per impostazione predefinita):

 Public Sub subCreatePDF ()

     Se non IsPDFLibraryInstalled Then
         'Meglio mostrarlo come un userform con un link corretto:
         MsgBox "Installa l'Addin per esportarlo in PDF. Puoi trovarlo all'indirizzo http://www.microsoft.com/downloads/details.aspx?familyid=4d951911-3e7e-4ae6-b059-a2e79ed87041". 
         Esci sott
     Finisci se

     ActiveSheet.ExportAsFixedFormat Tipo: = xlTypePDF, _
         Nome file: = ActiveWorkbook.Path & Application.PathSeparator & _
         ActiveSheet.Name & "für" & Range ("SelectedName"). Value & ".pdf", _
         Qualità: = xlQualityStandard, IncludeDocProperties: = True, _
         IgnorePrintAreas: = False, OpenAfterPublish: = True
 End Sub

 Funzione privata IsPDFLibraryInstalled () As Boolean
 "I crediti vanno a Ron DeBruin (http://www.rondebruin.nl/pdf.htm)
     IsPDFLibraryInstalled = _
         (Dir (Environ ("commonprogramfiles") e _
         "\ Microsoft Shared \ OFFICE" e _
         Formato (Val (Application.Version), "00") e _
         "\ EXP_PDF.DLL") <> "")
 Fine Funzione

Raccomando di aggiungere la seguente riga dopo l’esportazione in PDF:

 ThisWorkbook.Sheets("Sheet1").Select 

(dove ad esempio Sheet1 è il foglio singolo che vuoi essere attivo in seguito)

Lasciare più fogli in uno stato selezionato potrebbe causare problemi nell’eseguire un codice. (ad esempio, la protezione non funziona correttamente quando vengono selezionati più fogli).

In Excel 2013 seleziona semplicemente più fogli e fai un “Salva con nome” e seleziona PDF come tipo di file. Le pagine multiple si apriranno in PDF quando si fa clic su Salva.