Stampa fogli su unico PDF
Hai un problema con Excel? 
Stampa fogli su unico PDF
di sabotto (utente non iscritto) data: 13/10/2014 16:44:47
Voglio stampare un determinato intervallo fisso di celle per ognuno dei fogli di una cartella Excel, usando la stampante virtuale PDFCreator per ottenere un unico file che poi stamperei successivamente. Per fare cio ho scritto il seguente codice che funziona ma mi crea un file PDF per ogni foglio mentre io vorrei un unico file PDF con piu pagine, una per ogni foglio excel.
In effetti dovrei inserire una specie di "NewPage" (che non mi pare esista).
Suggerimenti?
With ActiveSheet.PageSetup 'adesso si impostano le proprietà di PageSetup
.PrintErrors = xlPrintErrorsDisplayed 'consente la visualizzazione di errori di stampa
.BlackAndWhite = True
.Draft = False 'per stampare anche i grafici: con false non li stampa
For Indice = 1 To 16
Set F = Worksheets("A" & Format$(Indice, "00"))
F.Range("A2:D21").PrintOut , ActivePrinter:="PDFCreator"
Next Indice
End With
MsgBox "Creazione File PDF dei Fogli A4 , eseguita ", vbInformation |
di lepat (utente non iscritto) data: 13/10/2014 18:06:15
Io uso questa senza passare da pdfcreator
Sub exportToPdfsomeSheetsTo1pdf() ' tutti i fogli in un unico documento
'Sheets(Array("Foglio1", "Foglio2")).Select
Sheets.Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
"C:Users
omeutenteDesktopNewBook.pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
True
Sheets(1).Select
End Sub |
di Zer0Kelvin data: 13/10/2014 18:49:56
Ciao.
Non so se esista una maniera semplice per farlo con PdfCreator.
Penso ti convenga usare un foglio d'appoggio su cui copiare tutte le pagine da stampare.
Dopo puoi, come suggerito da Patel, utilizzare ExportAsFixedFormat.
di sabotto (utente non iscritto) data: 13/10/2014 19:43:51
La soluzione di lepat puo andare bene se fosse possibile (non so se si e come) selezionare solo un intervallo (range) da ogni foglio e non tutto il contenuto di ognuno di essi perchè in ognuno dei fogli c'è tanta altra roba che a me non serve.
E' possibile?
di Zer0Kelvin data: 13/10/2014 22:36:16
Sì, é possibile.
Da ogni foglio si prende il range che ti interessa e lo si va a copiare in un foglio d'appoggio, sotto si va a copiare lo stesso range del foglio successivo e così via per tutti e 16 i fogli.
Alla fine si utilizza
FoglioAppoggio.ExportAsFixedFormat
per creare il pdf.
Unico problema è l'impaginazione, credo che tu voglia un foglio in ogni pagina di stampa, giusto?
Se tu potessi allegare un file Excel di esempio sarebbe molto più semplice per noi risolvere.
di sabotto (utente non iscritto) data: 14/10/2014 00:09:34
Eccolo! (STAMPA PDF)
Ho lasciato 3 fogli. Vorrei un PDF formato da 3 pagine . Su ogni pagina vorrei avere l'intervallo A2:D19 di ognuno dei 3 fogli , ma senza avere i colori nè le sfumature di grigio delle celle, infatti nella mia routine inniziale di esempio questo lo ottenevo con le istruzioni :
With ActiveSheet.PageSetup
.BlackAndWhite = True.
.....
Grazie
di lepat (utente non iscritto) data: 14/10/2014 08:16:26
prova questa
Sub b()
strPdfName = "C:Users
omeutenteDesktop est.pdf" ' <<< da modificare
Set tempSheet = Worksheets.Add(Before:=Sheets(1))
With Sheets(1)
.Columns("A:A").ColumnWidth = 30
.Columns("B:B").ColumnWidth = 30
.Columns("C:C").ColumnWidth = 8
.Columns("D:D").ColumnWidth = 8
LR = 1
For i = 2 To Sheets.Count
Sheets(i).Range("A2:D19").Copy .Range("A" & LR)
LR = .Cells(.Rows.Count, "A").End(xlUp).Row + 1
.HPageBreaks.Add Before:=.Range("A" & LR)
Next
With .UsedRange.Interior
.PatternColorIndex = 36
.ThemeColor = xlThemeColorDark1
.TintAndShade = 0
.PatternTintAndShade = 0
End With
.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strPdfName, _
Quality:=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
Application.DisplayAlerts = False
.Delete
Application.DisplayAlerts = True
End With
End Sub |
di sabotto (utente non iscritto) data: 14/10/2014 09:22:37
ottengo l'errore di run time 5: chiamata di routine o argomento non valido sulla riga :
.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strPdfName, _
Quality:=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
(tra l'altro non capisco perchè non mi funziona l'intellisense)
di lepat (utente non iscritto) data: 14/10/2014 09:31:48
forse sul 2007 non esiste la funzione ExportAsFixedFormat, prova allora con
Sub b()
strPdfName = "C:Users
omeutenteDesktop est.pdf" ' <<< da modificare
Set tempSheet = Worksheets.Add(Before:=Sheets(1))
With Sheets(1)
.Columns("A:A").ColumnWidth = 30
.Columns("B:B").ColumnWidth = 30
.Columns("C:C").ColumnWidth = 8
.Columns("D:D").ColumnWidth = 8
LR = 1
For i = 2 To Sheets.Count
Sheets(i).Range("A2:D19").Copy .Range("A" & LR)
LR = .Cells(.Rows.Count, "A").End(xlUp).Row + 1
.HPageBreaks.Add Before:=.Range("A" & LR)
Next
With .UsedRange.Interior
.PatternColorIndex = 36
.ThemeColor = xlThemeColorDark1
.TintAndShade = 0
.PatternTintAndShade = 0
End With
.PrintOut , ActivePrinter:="PDFCreator"
Application.DisplayAlerts = False
.Delete
Application.DisplayAlerts = True
End With
End Sub |
di Zer0Kelvin data: 14/10/2014 13:24:03
Ciao.
CIT.:
forse sul 2007 non esiste la funzione ExportAsFixedFormat
_______________________________________________
Guida di riferimento per sviluppatori di Excel
Worksheet.ExportAsFixedFormat, metodo
Esporta in un file nel formato specificato.
Informazioni sulla versione
Versione aggiunta: Excel 2007
_______________________________________________
L'errore, molto probabilnente, è dovuto ad un valore errato nella variabile strPdfName.
di sabotto (utente non iscritto) data: 14/10/2014 14:26:48
Visto che come dice zeroKelvin l'istruzione esiste in Excel 2007 vorrei insistere
Per cui ho fatto la seguente prova: di questa istruzione
.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strPdfName, _
Quality:=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
ho provato a lasciare solo Type:=xlTypePDF che è obbligatorio senza gli altri parametri che sono opzionali, ma da lo stesso errore
La variabile strPDFname è formata da
strPdfName = Application.ActiveWorkbook.Path & " est.pdf"
e risulta quindi essere valorizzata come "C:Documents and SettingsAntonioDesktop est.pdf"
L'unica cosa positiva è che adesso ho l'intellisense perchè ho cambiato l'istruzione
Set tempSheet = Worksheets.Add(Before:=Sheets(1))
With Sheets(1)
con
Set tempSheet = Worksheets.Add(Before:=Sheets(1))
With tempSheet
di lepat (utente non iscritto) data: 14/10/2014 16:17:58
se il path è sbagliato si ottiene l'errore 1004
di sabotto (utente non iscritto) data: 14/10/2014 18:05:58
Infatti. Comunque ho precedentemente allegato il file excel. A voi funziona l'istruzione?
di Rita (utente non iscritto) data: 15/10/2014 08:31:42
Scusate l'intromissione
Premesso che la soluzione proposta da Lepat mi funziona benissimo avrei solo una domanda
e' possibile creare il pdf includendo solo un certo numero di fogli e non tutti quelli presenti nel file
Sub exportToPdfsomeSheetsTo1pdf() ' tutti i fogli in un unico documento
'Sheets(Array("Foglio1", "Foglio2")).Select
Sheets.Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
"C:Users
omeutenteDesktopNewBook.pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
True
Sheets(1).Select
End Sub
|
di lepat (utente non iscritto) data: 15/10/2014 08:39:53
Si Rita, basta togliere l'apice alla seconda riga ed eliminare la terza
Sub exportToPdfsomeSheetsTo1pdf()
Sheets(Array("Foglio1", "Foglio2")).Select ' aggiungi i fogli che vuoi stampare
...... |
di sabotto (utente non iscritto) data: 15/10/2014 11:13:33
scusate se insito ma ribadisco la mia richiesta: il codice di lepat con il mio file di prova vi funziona? Non vi da l'errore che invece da a me?
Grazie
di Rita (utente non iscritto) data: 15/10/2014 11:44:06
Grazie Lepat - perfect
di lepat (utente non iscritto) data: 15/10/2014 12:12:37
Sabotto, il file allegato non contiene macro
di sabotto (utente non iscritto) data: 15/10/2014 15:03:19
Lo so. Intendevo dire: se tu copi il tuo codice, quello che mi hai suggerito nel mio file (crei tu la macro), che a me da errore, a te funziona? Mi serve per capire se è un problema del mio pc (che so qualche libreria mancante, o altro.
di lepat (utente non iscritto) data: 15/10/2014 16:01:12
se ti ho proposto un codice significa che l'ho provato e mi funziona (sul 2010), altrimenti avrei detto "non testato".
Inoltre ti ho anche detto quale errore viene segnalato in caso di nome del file errato.
Inoltre Rita ti ha detto che funziona
Rimango dell'idea che sia colpa del 2007 e ti ho proposto la soluzione con PdfCreator
Non ti basta ?
di Rita (utente non iscritto) data: 15/10/2014 16:23:59
Solo una precisazione
io utilizzo office 2007
di sabotto (utente non iscritto) data: 15/10/2014 17:30:14
Ok. era la prima affermazione che non davo per scontata. Anche io ho 2007. Evidentemente sono sfortunato.
Si puo chiudere e grazie a tutti
di lepat (utente non iscritto) data: 15/10/2014 17:43:03
Oppure hai commesso qualche errore, allega il tuo file con la macro e lo testiamo
di sabotto (utente non iscritto) data: 15/10/2014 18:27:22
Eccolo (Stampa PDF Sabotto). In effetti è quello originale con la macro dentro e il eprcorso del file corretto.
Se a te funziona vuol dire che a me manca qualcosa (ho visto che anche alti hanno avuto lo stesso problema)
Se cosi dovvesse essere vuol dire che userò la PDFCreator.
Una precisazione che non so se puo influire: io uso "Foxit Reader" come lettore di PDF e non il classico "Adobe Acrobat Reader" che non ho installato.
di lepat (utente non iscritto) data: 15/10/2014 18:39:09
funziona perfettamente sul 2010, vediamo se lo prova Rita
Vuoi Approfondire?