stampare fogli excel in pdf
Hai un problema con Excel? 
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
Vuoi Approfondire?