Stampare più fogli Excel in un unico PDF

Se si hanno diverse tabelle e dati su più fogli excel, e si vorrebbero presentare i dati in un documento unico, sarebbe dispendioso stampare i singoli fogli e poi unirli. Pertanto vediamo come salvare/stampare più fogli Excel in un unico file PDF, facendo uso di una MACRO VBA.

Una vecchia soluzione per versioni Excel  < 2010  è la seguente, ma prima di eseguire la macro ricordati di installare/preimpostare una stampante virtuale nel tuo PC.

Sub open_folder()
Dim file_xls As String, fol As String, fso As Object, f As Object
Dim wb1 As Workbook, wb2 As Workbook, sh As Worksheet

    'avviso! impostare PDFCreator come stampante predefinita.
    If MsgBox("Hai impostato PDFCreator come stampante predefinita?", vbQuestion + vbYesNo, "Attenzione") = vbNo Then Exit Sub
    
    'chiedo il nome del file tipo
    file_xls = InputBox("Inserisci il nome del file Excel da cercare")
    If file_xls = "" Then Exit Sub
    
    'apro la finestra di dialogo di sfoglia cartelle
    fol = CreateObject("Shell.Application").BrowseForFolder(0, "Scegli una cartella", 0, 0).Self.Path

    'creo l'oggetto file system
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    Set wb1 = Workbooks.Add

    'scorro i file di quella cartella e se coincidono col nome del file excel specificato
    'li apro e metto insieme tutti i fogli in un unico pdf
    For Each f In fso.GetFolder(fol).Files
        If LCase(Left(f.Name, 16)) = LCase(file_xls) Then
            'aprire ogni file, recuperare ogni sheet, inviarlo alla stampante virtuale pdf
            Set wb2 = Workbooks.Open(f)
            For Each sh In wb2.Worksheets
                sh.Copy after:=wb1.Sheets(wb1.Sheets.Count)
            Next
            wb2.Close savechanges:=False
        End If
    Next
    wb1.PrintOut
End Sub

 

Un’altra soluzione macro da provare è la seguente, che probabilmente funzionerà anche su versioni più recenti di Excel:

Sub exportToPdfsomeSheetsTo1pdf()
'Sheets(Array("Foglio1", "Foglio2")).Select ' inserisci i fogli da esportare
Sheets.Select ' tutti i fogli
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
    "C:UsersNomeUtenteDesktopNewBook.pdf", Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
    True
Sheets(1).Select
End Sub

 

Se le soluzioni di questa pagina non hanno funzionato, facci sapere che versione di Excel hai e ti forniremo le modifiche necessarie da adottare.