stampare fogli excel in pdf



  • stampare fogli excel in pdf
    di mb data: 25/02/2015 21:46:53

    scusate se faccio riferimento ad una discussione molto ma molto vecchia

    excelvba.it/Forum/story/Excel_e_gli_applicativi_Office/Stampare_fogli_in_automatico.html

    leggendo, presentava la possibilità di poter selezionare singoli fogli o più fogli e decidere alla fine di stamparli

    lo so che forse chiedo troppo ma qualcuno del forum ha una vecchia copia del file

    grazie



  • di lepat (utente non iscritto) data: 26/02/2015 07:41:40

    Non ho il file che hai chiesto, ma se selezioni manualmente tutti i fogli da stampare puoi provare questa macro modificando il percorso di salvataggio del pdf
     
    Sub exportToPdfsomeSheetsTo1pdf() ' tutti i fogli in un unico documento
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
        "C:provaNewBook.pdf", Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        True
    Sheets(1).Select
    End Sub



  • di mb data: 26/02/2015 09:00:09

    grazie lepat

    ieri sera tardi girando ho trovato qualcosa simile alla tua segnalazione sempre opera di Herry

    in quella discussione era interessante perchè attraverso una userform dava la possibilità di fare più cose:
    1 selezionare fogli diversi e stamparli singolarmente
    2 stamparne uno solo
    3 stampare un unico pdf

    grazie comunque e spero che qualcun altro del forum legga e possa trovare quanto cerco

    grazie grazie ti allego anche la versine per oter stampare un pdf per ogni foglio

     
    'per stampare un pdf per ogni foglio con il nome del foglio stesso
    Sub pdf_ogni_foglio()
    
        Dim foglio As Worksheet
        percorso = "C:excel"
        
        For Each foglio In Worksheets
            nomefoglio = foglio.Name
            foglio.ExportAsFixedFormat Type:=xlTypePDF, _
                                        Filename:=percorso & nomefoglio & ".pdf", _
                                        Quality:=xlQualityStandard, _
                                        IncludeDocProperties:=True, _
                                        IgnorePrintAreas:=False, _
                                        OpenAfterPublish:=False
        Next
    End Sub
    
    
    'per stampare tutti i fogli su un unico pdf
    Sub pdf_unico()
        Dim foglio As Variant
        foglio = Array()
        For i = 1 To Sheets.Count
            ReDim Preserve foglio(i - 1)
            foglio(i - 1) = Sheets(i).Name
        Next i
        nomecartella = ActiveWorkbook.Name
        percorso = "C:UsersDesktopstampe"
    
        Sheets(foglio).Select
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
                                        Filename:=percorso & nomecartella & ".pdf", _
                                        Quality:=xlQualityStandard, _
                                        IncludeDocProperties:=True, _
                                        IgnorePrintAreas:=False, _
                                        OpenAfterPublish:=True
    End Sub
    
    



  • di alfrimpa data: 26/02/2015 12:11:48

    Ciao MB

    I tuoi quesiti:

    1 selezionare fogli diversi e stamparli singolarmente
    2 stamparne uno solo

    Con una userform all'interno della quale ci sia una listbox con la multiselezione abilitata credo sia possibile fare quello che chiedi (stampare i fogli selezionati oppure uno singolo)

    Per il terzo mi pare che tu stesso (con la seconda macro che hai postato) si risolva il problema (io non ho provato).

    O mi sto perdendo qualcosa?

    Alfredo





  • di mb data: 26/02/2015 12:17:09

    ciao alfimpra

    esattamente come dici però non saprei come impostare la userform

    grazie



  • di alfrimpa data: 26/02/2015 12:33:12

    Ciao MB

    Spiegare qui le cose sarebbe troppo lungo

    Ti allego un piccolo file (è un giochino) in cui ho inserito una userform con una listbox

    Quando lanci la macro1 viene visualizzata la userform con la listbox.

    Ma qui mi fermo

    Studiati un po' la cosa, fai delle prove, crea altre userform con altri controlli, guardati le proprietà dei singoli controlli e probabilmente riuscirai anche ad adattarla alle tue esigenze. Si lo so non è una cosa agevole ma a questo mondo nessuno nasce "imparato" (tranne il sottoscritto visto che questo è il mio cognome ) per cui se fai un piccolo sforzo sicuramente perverrai al tuo obiettivo.

    Diversamente il forum è qui.

    Alfredo





  • di alfrimpa data: 26/02/2015 12:44:49

    Aggiungo che se vai a vedere il codice associato al CommandButton1 della Userform ti renderai conto che in luogo del MsgBox è possibile inserire qualunque tipo codice (anche una chiamata ad altra macro) che verrà eseguito per tutti gli elementi selezionati della listbox (o per uno solo se ne selezioni uno).

    Se ad esempio hai una macro che si chiama stampa sostituendo il MsgBox con:

    Call stampa

    Verrà effettuata la stampa dei fogli selezionati nella listbox.

    Spero di essere stato chiaro.

    Alfredo





  • di Vecchio Frac data: 26/02/2015 14:12:32

    cit. "a questo mondo nessuno nasce "imparato" (tranne il sottoscritto visto che questo è il mio cognome)"
    ---> Oddio l'ho capita solo adesso :o)





  • di mb data: 26/02/2015 14:22:05

    scusa alfre lascia stare il file allegato ho solo fatto cavolate, stampa tutti i fogli...



  • di alfrimpa data: 26/02/2015 14:23:05

    Vecchio Frac mi deludi ; non è che stai tenendo fede al tuo nick?

    Alfredo





  • di Vecchio Frac data: 26/02/2015 14:25:00

    Ho l'impressione di essere sovrastimato :)





  • di alfrimpa data: 26/02/2015 14:28:50

    Cit. "scusa alfre lascia stare il file allegato ho solo fatto cavolate, stampa tutti i fogli..."

    In che senso?

    Se selezioni un unico foglio ti stampa tutti i fogli?

    Afredo





  • di alfrimpa data: 26/02/2015 14:40:50

    Ciao MB

    La macro STAMPA va un po' rivista perché deve tenere conto del foglio selezionato nella listbox ed ora non lo fa.

    Fai sapere se ti può essere utile.

    Alfredo





  • di mb data: 26/02/2015 14:42:29

    affermativo!!!

    ma l'errore è nella sub di stampa che è vero che genera un file pdf per ogni foglio che è quello che mi interessa ma siccome il comando è For each foglio naturalmente li stampa tutti

    peccato....


     
    Sub stampa()
    
        Dim foglio As Worksheet
        percorso = "C:excel"
        
        For Each foglio In Worksheets
            nomefoglio = foglio.Name
            foglio.ExportAsFixedFormat Type:=xlTypePDF, _
                                        Filename:=percorso & nomefoglio & ".pdf", _
                                        Quality:=xlQualityStandard, _
                                        IncludeDocProperties:=True, _
                                        IgnorePrintAreas:=False, _
                                        OpenAfterPublish:=False
        Next
    End Sub
    



  • di alfrimpa data: 26/02/2015 14:51:20

    Quindi a te interessa anche il pdf di un unico foglio selezionato nella listbox?

    Ora mi metto a studiare

    Alfredo





  • di alfrimpa data: 26/02/2015 15:03:05

    Ciao

    Credo e spero di aver risolto.

    Prova la macro qui sotto e fammi sapere.

    Alfredo

    P.S. Il problema è che in VBA occorre sapere un miliardo di cose e vai a scovare quella che serve a te.....
     
    Private Sub CommandButton1_Click()
    Dim n As Integer
    Dim nomefoglio As Variant
    For n = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(n) = True Then
            nomefoglio = ListBox1.List(n)
            MsgBox nomefoglio
            Worksheets(nomefoglio).Select
            ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
                                        Filename:=percorso & nomefoglio & ".pdf", _
                                        Quality:=xlQualityStandard, _
                                        IncludeDocProperties:=True, _
                                        IgnorePrintAreas:=False, _
                                        OpenAfterPublish:=False
        End If
    Next n
    End Sub
    






  • di alfrimpa data: 26/02/2015 15:06:54

    Ovviamente va cancellato il MsgBox(nomefoglio); lo avevo inserito solo per delle verifiche

    Una cosa, però, mi incuriosisce: se c'è l'esigenza di inserire tutti i fogli in un unico PDF personalmente non ho la minima idea di come fare.

    Speriamo che Vecchio Frac (o altri) ci venga in aiuto

    Alfredo
     
    Private Sub CommandButton1_Click()
    Dim n As Integer
    Dim nomefoglio As Variant
    For n = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(n) = True Then
            nomefoglio = ListBox1.List(n)
            Worksheets(nomefoglio).Select
            ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
                                        Filename:=percorso & nomefoglio & ".pdf", _
                                        Quality:=xlQualityStandard, _
                                        IncludeDocProperties:=True, _
                                        IgnorePrintAreas:=False, _
                                        OpenAfterPublish:=False
        End If
    Next n
    End Sub
    






  • di alfrimpa data: 26/02/2015 15:13:52

    Ho provato a salvare in PDF l'intera cartella in PDF ma mi prende solo il foglio attivo.

    Continuiamo la ricerca....

    Alfredo





  • di mb data: 26/02/2015 15:18:20

    Grandeee

    ho solo aggiunto percorso = "c:excel"

    perchè così imposto direttamente la cartella dove salare il tutto

    grazie

    alla prossima
    adesso vado a studiare




  • di Vecchio Frac data: 26/02/2015 15:38:46

    cit. "Ho provato a salvare in PDF l'intera cartella in PDF ma mi prende solo il foglio attivo. "
    ---> il codice dice espressamente "ActiveSheet.ExportAsFixedFormat ..."
    Non poteva comportarsi che così :o)





  • di Vecchio Frac data: 26/02/2015 15:44:18

    Ho visto dopo che era stato inserito il select sul Worksheet. Allora doveva funzionare ugualmente (potevasi anche non preselezionare il Worksheet).

    cit. "se c'è l'esigenza di inserire tutti i fogli in un unico PDF personalmente non ho la minima idea di come fare. "
    ---> In questi casi io esporto in una cartella temporanea poi uso pdftk per fondere i pdf.





  • di alfrimpa data: 26/02/2015 15:50:27

    Quindi da Excel si può salvare un solo foglio per volta in PDF?

    Grazie Vecchio Frac

    Alfredo





  • di Vecchio Frac data: 26/02/2015 15:57:01

    Comunque su questo Excel 2007 questa cosa qui sotto funziona e salva nella cartella predefinita (Documenti).
     
    ThisWorkbook.Sheets(Array("foglio1", "foglio3")).Select
    
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Quality:= xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
    






  • di Vecchio Frac data: 26/02/2015 15:57:58

    L'esempio che ho provato salva il foglio1 e il foglio3 (il parametro filename fa saltare il codice ma forse solo perchè non ho salvato il file excel, devo verificare poi vi dico).





  • di Vecchio Frac data: 26/02/2015 16:00:24

    Verificato, funziona perfettamente salvando il pdf finale come fusione di due fogli in cartella e con nome di file specificato ad esempio così: FileName:="C:Users***Desktoppippo.pdf".
    Utile anche per me questa cosa ^_^





  • di Vecchio Frac data: 26/02/2015 16:15:58

    Siccome la prossima domanda di MB è "come faccio ad adattare questa novità al mio codice?", provate questa modifica (fermo restando che "percorso" non è definito da nessuna parte, è una variabile globale? e ha uno slash alla fine? ). Il file risultante si chiamerà "merged.pdf", ma a questo punto cambiate pure percorso e nome che lo sapete fare :o)

    (per quel .Select n=0 ci vorrà un minimo di spiegazione se non la trovate da soli)
     
    Private Sub CommandButton1_Click()
    Dim n As Integer, nomefoglio As String
    
        For n = 0 To ListBox1.ListCount - 1
            If ListBox1.Selected(n) = True Then
                nomefoglio = ListBox1.List(n)
                Worksheets(nomefoglio).Select n=0
            End If
        Next
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
                                        Filename:=percorso & "merged.pdf", _
                                        Quality:=xlQualityStandard, _
                                        IncludeDocProperties:=True, _
                                        IgnorePrintAreas:=False, _
                                        OpenAfterPublish:=False
        
    End Sub






  • di mb data: 26/02/2015 17:20:39

    grazie a tutti per la disponibilità e professionalità che avete ad ogni richiesta d'aiuto

    buona serata tutto ok