Vuoi trasformare in un clic più fogli di un file Excel in un unico report pdf? Oggi vediamo come possiamo farlo, con un pizzico di vba.
Come si crea un report Pdf da Excel
Excel offre già i strumenti per creare un pdf: salva come PDF, o la stampante virtuale, ma creare un pdf mutipagina richiede diverse attività e il tempo necessario.
Con poche righe di VBA è possibile farlo con un clic.
Non solo possiamo selezionare in automatico più fogli da unire nel tuo Pdf, ma possiamo chiedere all’utente dove salvare il file e quale nome dargli tramite una finestra di Excel, gestire un cambiamento di idea dell’utente, mantenere il focus sul foglio di partenza e dare una conferma al termine.
Come si crea un report pdf da Excel senza Vba
È possibile fare tutto questo senza macro?
Certo, il pdf si può creare eseguendo le attività necessarie in questo modo:
- prima selezioni i fogli da integrare nel pdf, cliccando con il pulsante sinistro del mouse sulle linguette dei nomi dei fogli, in basso, tenendo premuto il tasto Ctrl per aggiungere via via i fogli alla selezione; puoi anche usare il tasto Maiuscolo, per selezionare tutti i fogli tra quello selezionato e quello cliccato;
- poi salvi il pdf, o tramite il comando Salva con nome che trovi nella scheda File della barra multifunzione, poi scegliendo come formato del salvataggio il pdf; in alternativa puoi usare il comando Stampa e impostare come stampante di destinazione la stampante “Microsoft Print to PDF”.
Perché usare l’automazione?
Perché per fare quanto appena spiegato di solito ci mettiamo decine di secondi, non così tanto in fondo, ma con la macro il tempo necessario è quello di un clic o poco più. Inoltre con la macro ottieni il pdf sempre uguale e senza errori.
Logica della macro
La macro è composta dal codice necessario per:
- selezionare più fogli da unire in un Pdf,
- richiamare la finestra di salvataggio all’utente per scegliere la cartella di destinazione e inserire il nome del file;
- se necessario gestire l’annullamento da parte dell’utente;
- esportare i fogli in un Pdf;
- ritornare alla pagina da cui è stata lanciata la macro;
- mostrare un messaggio di conferma alla fine.
I passaggi della macro sono:
- memorizzare il foglio attivo per tornare a quello dopo l’export;
- selezionare l’insieme di fogli da includere nel report usando un Array con i nomi dei fogli;
- richiamare la finestra di salvataggio usando il metodo “GetSaveAsFilename” per permettere all’utente di scegliere percorso e nome del PDF;
- se l’utente annulla, interrompere la macro senza errori;
- creare il pdf usando il metodo “ExportAsFixedFormat”;
- ritornare al foglio di partenza;
- e mostrare un messaggio di conferma.
Il codice della macro vba
Il codice è questo:
Sub ReportPDF()
Dim PaginaIniziale As String
Dim NomeFile As Variant
‘ Salva il nome del foglio da cui viene lanciata la macro
PaginaIniziale = ActiveSheet.Name
‘ Seleziona i fogli da includere nel PDF (modifica i nomi)
Worksheets(Array(“Foglio1”, “Foglio2”, “Foglio3”)).Select
‘ Richiama la finestra Salva per ottenere percorso e nome del Pdf
NomeFile = Application.GetSaveAsFilename( _
InitialFileName:=”Report ” & Format(Date, “yyyy-mm-dd”), _
FileFilter:=”PDF (*.pdf), *.pdf”, _
Title:=”Salva PDF”)
‘ Se l’utente chiude la finestra o preme Annulla, GetSaveAsFilename restituisce False
If NomeFile = False Then
Worksheets(PaginaIniziale).Select
Exit Sub
End If
‘ Esporta le pagine selezionate in PDF
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=NomeFile, _
OpenAfterPublish:=True
‘ Torna al foglio di partenza
Worksheets(PaginaIniziale).Select
‘ Messaggio di conferma
MsgBox “PDF CREATO”, vbOkOnly, “”
End Sub
Come usare il codice
Come devi usare il codice precedente?
In questo modo:
- apri il file excel in cui vuoi aggiungere il codice;
- se necessario salva il file in formato xlsm, il formato previsto per gestire l’automazione aggiunta;
- premi Alt+F11 per aprire l’Editor VBA;
- se necessario aggiungi un nuovo modulo standard, cliccando prima sul menù “inserisci” e poi sul comando “modulo”;
- torna qui e copia il codice;
- torna all’editor e incolla il codice nel modulo bianco o sotto alle altre macro;
- sostituisci i nomi dei fogli nell’Array con quello della tua cartella di lavoro.
- prova il codice o direttamente dall’editor o usando la finestra “macro” che puoi richiamare premendo Alt+F8
Spiegazione dei passaggi più complessi
I passaggi più complessi del codice sono:
- Worksheets(Array(…)).Select: seleziona contemporaneamente i fogli indicati. È l’equivalente di tenere premuto CTRL e cliccare i tab.
- Application.GetSaveAsFilename: apre la finestra per scegliere percorso e nome. Restituisce False se l’utente annulla: perciò è fondamentale controllare questo caso.
- ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF: metodo che crea il PDF. Tra i parametri utili: Filename (percorso completo) e OpenAfterPublish (True per aprire il PDF automaticamente).
- Ripristino del focus al foglio iniziale: dopo l’esportazione riportiamo il focus sul foglio da cui è stata lanciata la macro, per non disorientare l’utente.
Predisponi le pagine per la stampa
Una cosa che finora ho sottinteso è che per ottenere un report ben fatto, una delle premesse fondamentali è che i fogli selezionati devono essere preimpostate per la stampa.
Questo significa impostare l’area di stampa e gli eventuali titoli da ripetere in alto, oltre che impostare margini e scala della stampa, per esempio tramite l’anteprima di stampa.
Se i fogli non sono vengono predisposti per la stampa, il report probabilmente non apparirà ordinato come dovrebbe e mostrerà pagine aggiuntive indesiderate.
Ti invito a leggere questa guida per approfondire l’argomento.
Consigli pratici e varianti
- Se alcuni fogli sono nascosti, non è possibile selezionarli direttamente: prima rendili visibili (Sheets(“Nome”).Visible = True).
- Ricorda che per evitare sovrascritture non desiderate, nel nome del file è opportuno includere la data.
- Il messaggio di conferma non è necessario, visto che il file pdf viene aperto e mostrato in evidenza. Se vuoi puoi rimuoverlo o sospenderlo con qualche apostrofo.
- Se non vuoi che il pdf si apra automaticamente, imposta OpenAfterPublish:=False e usa un MsgBox per confermare il successo.
- Se il tuo report cambia spesso, invece di inserire i nomi fissi nel codice, considera la possibilità di generare dinamicamente l’Array leggendo il contenuto di una lista in un foglio dedicato che l’utente può modificare quando serve.
Possibili ulteriori miglioramenti del codice vba
Se vuoi puoi migliorare la macro in diversi modi. Per esempio per:
- leggere la lista dei fogli da trasformare in pdf da un elenco personalizzabile dall’utente,
- registrare i pdf creati in una tabella predisposta in un foglio nascosto,
- allegare il pdf a una mail, anche precompilata,
- o anche inviarla in automatico a destinatari predefiniti.
Conclusione
Con poche righe di VBA ottieni un processo ripetibile, veloce e meno soggetto a errori rispetto alla procedura manuale. È un’ottima automazione da introdurre quando devi consegnare report PDF multipagina con frequenza.
Questa automazione ti consente di risparmiare tempo e standardizzare la generazione di report da file Excel.
Vuoi approfondire?
Se stai iniziando con il VBA, ti invito a leggere questa guida e questa guida, e guardare questa playlist e quest’altra che trovi sul mio canale youtube.
Se vuoi imparare a usare al meglio il registratore di macro, ti invito a iscriverti a questo piccolo corso.
Se invece vuoi imparare ad automatizzare i tuoi fogli excel, questo corso ti insegna a farlo.
ho preparato una libreria di macro pronte per principianti, con una guida e un tutorial che ti spiegano come usare le macro per automatizzare i tuoi fogli.
Se vuoi imparare a realizzare i tuoi fogli automatizzati posso insegnartelo
Puoi farlo imparando l’automazione di Excel. Anche per questo ho realizzato questo corso:
Vuoi una mano a realizzare o migliorare i tuoi strumenti?
Se hai bisogno di aiuto per realizzare o migliorare i tuoi strumenti forse posso darti una mano:
Cerchi strumenti professionali?
Se cerchi strumenti più efficienti, comodi e sicuri vai alla pagina degli strumenti pronti di Excel Professionale:
Come ottenere i fogli dimostrativi
Per conoscere tutti i fogli dimostrativi gratuiti pubblicati da Excel Professionale puoi cliccare qui.
Per riceverli registrati tramite il form qui di seguito e scaricali gratuitamente insieme agli altri contenuti gratuiti.
PS: Se questo post sulle maschere Excel automatizzate ti è piaciuto o ti è stato utile, condividilo con gli amici sui social.
Puoi farlo attraverso i pulsanti qui di seguito. Grazie








