Crea un report multipagina PDF da Excel con una semplice macro VBA

By | 27 Gennaio 2026

pdf da ExcelVuoi 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:

  1. 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;
  2. 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”.

report pdf excel

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.

Automazione di Excel

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:

  1. apri il file excel in cui vuoi aggiungere il codice;
  2. se necessario salva il file in formato xlsm, il formato previsto per gestire l’automazione aggiunta;
  3. premi Alt+F11 per aprire l’Editor VBA;
  4. se necessario aggiungi un nuovo modulo standard, cliccando prima sul menù “inserisci” e poi sul comando “modulo”;
  5. torna qui e copia il codice;
  6. torna all’editor e incolla il codice nel modulo bianco o sotto alle altre macro;
  7. sostituisci i nomi dei fogli nell’Array con quello della tua cartella di lavoro.
  8. prova il codice o direttamente dall’editor o usando la finestra “macro” che puoi richiamare premendo Alt+F8

report pdf da Excel

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:

  1. leggere la lista dei fogli da trasformare in pdf da un elenco personalizzabile dall’utente,
  2. registrare i pdf creati in una tabella predisposta in un foglio nascosto,
  3. allegare il pdf a una mail, anche precompilata,
  4. o anche inviarla in automatico a destinatari predefiniti.

Come creare pdf da Excel

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.

 

 

 

Vuoi automatizzare i tuoi fogli con una libreria di macro pronte all’uso?

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:

corso vba corso automazione di Excel

 

 

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

 

Rispondi

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.