› Excel e gli applicativi Microsoft Office › Stampa pdf con nume recorso in una cella con BullZip
-
AutoreArticoli
-
Salve a tutti ho un problema che non riesco a risolvere, stampare un file pdf con BullZip, il proble è che non mi assegana il nome, che dovrebbe prendere in una cella, mente mi assega il nome del foglio originale, quando lancio la macro si apre la finesta bi Bullzip pdf , con il percorso del file e il nome, dimenticavo il percorso e prelevato da una cella ed è esatto solo il nome non viene assegnato. Allego la macro con la speranza che qualcuno mi possa aiutare.
Volevo chiede come mai con la stampa pdf inglobbato in excel il file creato è grande più del doppio, rispetto ad un altra stampante pdf? Però se il carattere inserito nel file è Ariel il file creato e più piccolo ad altre stampanti Pdf?
Allego codice
Sub stampa_PDF_BullZip() 'STAMPA PDF SOLO SELEZIONE XXXXXXXXXXXX
Dim S As String
S = ActivePrinter
Dim SavePath As String, FileName As String
SavePath = Range("Q14")
FileName = Range("Q13")
'verrà proposto in automatico
FileName = SavePath & Range("J2").ValueApplication.ScreenUpdating = False
'Sheets("Pannello").Range("A9:N24").Select
Sheets("Pannello").Select
ActiveSheet.PageSetup.PrintArea = "$A$11:$K$23"
With ActiveSheet.PageSetup
'With Selection
'Selection.PrintPreview
Sheets("Pannello").PrintOut Copies:=1, ActivePrinter:=Trim(Sheets("Pannello").Range("$E$31")), Collate:=True
'Sheets("Pannello").PrintPreview Copies:=1, ActivePrinter:=Trim(Sheets("Pannello").Range("$E$31")), Collate:=True
ActivePrinter = S
End With
Application.ScreenUpdating = True
End SubCosa c'è in Range("Q13") ? Cosa c'è in Range("Q14") ? Cosa c'è in Range("J12")? Letteralmente, intendo.
Perchè per costruire un percorso devi concatenare le directory con lo slash: se manca nelle celle indicate, lo devi mettere tu nel codice.
La stampa con ExportAsFixedFormat diventa più grande se la qualità è standard (impostala su Minimum).
Il carattere Arial non dovrebbe influenzare la dimensione del file.
Grazie per aver risposto, commento quello che c'e nelle celle :
in Q13 il nome da assegare al file pdf
in Q14 il percorso dove salvare il file pdf
in FileName = SavePath & Range("J2").Value nulla ho eliminato la riga di codice ma continua ad assegare il nome del file originale.
come posso risplvere il problema?
Prova effettuata con La stampa con ExportAsFixedFormat
Formato standar file creato 187 KB
Formato Minimun file creato 184 KB
Formato cambiando il carattere con Arile 6,98 KB
SavePath = Range("Q14") FileName = Range("Q13") 'verrà proposto in automatico FileName = SavePath & Range("J2").Value
Nel tuo codice originale la variabile FileName assume il valore della seconda assegnazione (quindi non sarà mai Range("Q13"), perchè subito dopo c'è l'assegnazione con SavePath e Range("J2").Value).
In linea generale però dovresti curare che ci sia uno slash:
'verrà proposto in automatico FileName = SavePath & "\" & Range("J2").Value
e quindi se in Q13 hai il nome del file e in Q14 il percorso dovresti fare una cosa del genere:
FileName = Range("Q14") & "\" & Range("Q13") 'adesso in FileName hai il percorso + il nome del file
La faccenda dell'Arial mi incuriosisce 🙂
Ho provato a corregere come consigliato, pero continua a prendere il percorso ma il nome del file no
forse sbaglio qualcosa allego il codice con la modifica.
Sub stampa_PDF_BullZip() 'STAMPA PDF SOLO SELEZIONE XXXXXXXXXXXX
Dim S As String
S = ActivePrinter
Dim SavePath As String, FileName As String
FileName = Range("Q14") & "\" & Range("Q13")
Application.ScreenUpdating = False
Sheets("Pannello").Select
ActiveSheet.PageSetup.PrintArea = "$A$11:$K$23"
With ActiveSheet.PageSetup
'With Selection
'Selection.PrintPreview
Sheets("Pannello").PrintOut Copies:=1, ActivePrinter:=Trim(Sheets("Pannello").Range("$E$31")), Collate:=True
'Sheets("Pannello").PrintPreview Copies:=1, ActivePrinter:=Trim(Sheets("Pannello").Range("$E$31")), Collate:=True
ActivePrinter = S
End With
Application.ScreenUpdating = True
End Subper il testo Arial ho fatto le prove e la dimesione dei file creati e quella riportata, non sò come è possibile. prova a fare delle prove, e fammi sapere usa un foglio e insrisci del testo e un po di formattazione, stampa il foglio, poi cambia solo il carattere con arial e rifai la stampa.
se si può risolvere il problema della grandezza del file creato, è più comodo usare il comando di excel per stampare il file pdf
continua a prendere il percorso ma il nome del file no
Nel codice, FileName viene creata e valorizzata, ma poi non viene mai usata. Non c'è alcuna istruzione che dica "questo è il nome del file pdf". Se non utilizzi l'istruzione incorporata, devi prima salvare il file con quel nome, poi quando stampi su pdf, questo avrà il nome del file appena salvato.
Io propongo una cosa così (non testata)
Sub stampa_PDF_BullZip() 'STAMPA PDF SOLO SELEZIONE XXXXXXXXXXXX Dim S As String Dim SavePath As String, FileName As String S = ActivePrinter FileName = Range("Q14") & "\" & Range("Q13") ThisWorkbook.SaveAs FileName Application.ScreenUpdating = False Sheets("Pannello").Select ActiveSheet.PageSetup.PrintArea = "$A$11:$K$23" With ActiveSheet.PageSetup 'With Selection 'Selection.PrintPreview Sheets("Pannello").PrintOut Copies:=1, ActivePrinter:=Trim(Sheets("Pannello").Range("$E$31")), Collate:=True 'Sheets("Pannello").PrintPreview Copies:=1, ActivePrinter:=Trim(Sheets("Pannello").Range("$E$31")), Collate:=True ActivePrinter = S End With Application.ScreenUpdating = True End Sub
ho fatto una prova e adesso funziona, volevo chiede e possibile salvare il file creato senza aprire la finesta di BullZip, dove devo premere il tasto salva.
Volevo sapere se hai fatto qualche prova per verificare il problema della stampa pdf incorporato in excel, stano che crea i fili di dimenzione più del doppio con caratte differrente da ariel, mentre se il caratte è ariel crea dei file pdf di dimenzioni minori rispetto ad altri programmi che creano pdf.
senza aprire la finesta di BullZip
Ho guardato rapidamente la documentazione, con BullZip c'è la versione da terminale (a linea di comando) chiamata "pdfcmd.exe" che si potrebbe chiamare con gli opportuni parametri per produrre il pdf desiderato. Mi par di capire che funziona come pdftk che uso con successo da tanto tempo. Ti basta fare qualche prova per verificare che riesca a produrre il file pdf partendo da un file Excel e poi se funziona inglobare la riga di comando nel tuo codice. Altrimenti non c'è modo di evitare la finestra di Bullzip (cioè forse si può provare con SendKeys ma non ne sono così sicuro).
Non ho fatto ulteriori test con il carattere Arial, mi fido della tua affermazione 🙂
grazie per l'aiuto, proverò a fare delle prove, altra cosa guardando attentamente ho visto che quando creo il file pdf mi crea un file excel nuovo con il nome del file pdf, non è possibile evitare questa creazione di file, il problema e che chiude il file originale senza salvare le modifiche e crea il nuovo file che a me non necessita. Ci sono altri programmi che si posso gestire meglio, per creare il pdf e salvare con nome e nella director specificata.
Purtroppo io vado a tentativi, non sono esperto di Vba.
-
AutoreArticoli