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.