Condividi:        

Macro per stampa pdf di un area di stampa

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Macro per stampa pdf di un area di stampa

Postdi fastbike73 » 05/09/14 14:31

Buonasera a tutto il forum,
ho la necessità di assegnare una macro ad un pulsante. Attraverso questa macro
vorrei effettuare la stampa in pdf di un area di stampa (compresa nel range A1:L43).
L'area di stampa si trova nel foglio "P&L_Negozi" del mio file.
Il nome che dovrebbe essere dato al file pdf è il risultato della seguente concatenazione (dello stesso foglio):
<< B1&"Riclassificato"&F1 >>
la destinazione è C:\Excel\Riclassificati\*.pdf
Ho già provveduto ad installare PDFCreator e ad aggiungerlo ai riferimenti.
Nel forum ho letto un po' di thread che parlano di quest'argomento ma non riesco a
personalizzare il codice che viene riportato.
Vi sarei grato per il vostro aiuto.
Saluti.
fastbike73
Win 10 & Office365
Filemaker Pro v. 13
fastbike73
Utente Senior
 
Post: 256
Iscritto il: 23/04/14 10:54

Sponsor
 

Re: Macro per stampa pdf di un area di stampa

Postdi fastbike73 » 05/09/14 15:12

Buonasera, scusatemi se ho postato troppo in fretta la richiesta di aiuto. Sono riuscito da solo utilizzando il codice di Anthony trovato in una precedente discussione. Sono riuscito a personalizzarlo e adesso funziona tutto a dovere. Per chi fosse interessato la discussione era la seguente:
http://www.pc-facile.com/forum/viewtopic.php?t=97136

Grazie a tutti e soprattutto a Anthony!!!
fastbike73
Win 10 & Office365
Filemaker Pro v. 13
fastbike73
Utente Senior
 
Post: 256
Iscritto il: 23/04/14 10:54

Re: Macro per stampa pdf di un area di stampa

Postdi fastbike73 » 05/09/14 16:58

Anthony ho ancora una domanda da farti. Avrei la necessità stampare in pdf tutti i fogli, non contemporaneamente ma solo su "richiesta", in cui ho inserito il relativo pulsante (associato alla macro PrintF12).
Attualmente il codice specifica in questo modo il foglio da stampare:

Codice: Seleziona tutto
'-----------------------
Sub PrintF12()
Sheets("P&L_Negozi").Select  ' <-------------------- come si può modificare???
     PercF = "C:\Excel\Riclassificati"
     NFile = Range("B1").Value & "-" & "Riclassificati" & Range("F1").Value
     Call macroPrintPDF1(PercF & "\", NFile)
End Sub
'----------------------


Come potrei agganciare la stessa macro a tutti i pulsanti creati nei vari fogli soggetti a stampa in pdf??? :?: :?: :?:
Spero di aver reso chiaro qual'è il mio problema....
Grazie in ogni caso a chiunque possa aiutarmi!!!
fastbike73
Win 10 & Office365
Filemaker Pro v. 13
fastbike73
Utente Senior
 
Post: 256
Iscritto il: 23/04/14 10:54

Re: Macro per stampa pdf di un area di stampa

Postdi Anthony47 » 06/09/14 01:54

Se hai inserito un pulsante in ognuno dei fogli che potrebbero essere stampati, allora io direi che basta eliminare la riga che seleziona il foglio, e automaticamente la macro lavorera' sul "Foglio corrente".

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro per stampa pdf di un area di stampa

Postdi fastbike73 » 06/09/14 09:03

Anthony47 ha scritto:Se hai inserito un pulsante in ognuno dei fogli che potrebbero essere stampati, allora io direi che basta eliminare la riga che seleziona il foglio, e automaticamente la macro lavorera' sul "Foglio corrente".

Ciao


Buongiorno Anthony, non credevo fosse così semplice.... ti ringrazio molto per il tuo intervento!!
fastbike73
Win 10 & Office365
Filemaker Pro v. 13
fastbike73
Utente Senior
 
Post: 256
Iscritto il: 23/04/14 10:54

Re: Macro per stampa pdf di un area di stampa

Postdi fastbike73 » 06/09/14 09:13

Anthony47 ha scritto:Se hai inserito un pulsante in ognuno dei fogli che potrebbero essere stampati, allora io direi che basta eliminare la riga che seleziona il foglio, e automaticamente la macro lavorera' sul "Foglio corrente".

Ciao

Anthony, mi sono accorto che dopo aver premuto il pulsante per la stampa, quando torno nell'editor del VBA, trovo la macro ancora in esecuzione. Forse manca qualcosa nel codice?

Per completezza lo riporto per intero dato che l'ho personalizzato..:

Codice: Seleziona tutto
Sub macroPrintPDF1(ByVal PercF As String, ByVal NFile As String)

Dim objPDFCreator
On Error Resume Next
    If Dir(PercF & NFile) = PercF & NFile Then Kill (PercF & NFile)
    Shell "taskkill /f /im PDFCreator.exe", vbHide
Application.Wait (Now + TimeValue("0:00:05"))
On Error GoTo 0

Set objPDFCreator = CreateObject("PDFCreator.clsPDFCreator")
aaa1 = objPDFCreator.cProgramIsRunning

With objPDFCreator
.cStart "/NoProcessingAtStartup"
.cOption("UseAutosave") = 1
.cOption("UseAutosaveDirectory") = 1
.cOption("AutosaveDirectory") = PercF
.cOption("AutosaveFilename") = NFile
.cOption("AutosaveFormat") = 0
aaa = .cOption("AutosaveFilename")
.cVisible = False
.cClearCache
End With
'
ActiveSheet.PrintOut Copies:=1, ActivePrinter:="PDFCreator"   'stampa "Foglio"
objPDFCreator.cPrinterStop = False

'attesa disponibilita' file finale
Do
   DoEvents
Loop Until Dir(PercF & NFile) = NFile
'
'clear finale oggetto e kill processo
Set objPDFCreator = Nothing
Shell "taskkill /f /im PDFCreator.exe", vbHide
'
End Sub

Sub PrintF12()
'Sheets("P&L_Negozi").Select
     PercF = "C:\.....\Riclassificati"
     NFile = Range("B1").Value & "-" & "Riclassificati" & "-" & Range("F1").Value
     Call macroPrintPDF1(PercF & "\", NFile)
End Sub
fastbike73
Win 10 & Office365
Filemaker Pro v. 13
fastbike73
Utente Senior
 
Post: 256
Iscritto il: 23/04/14 10:54

Re: Macro per stampa pdf di un area di stampa

Postdi Anthony47 » 10/09/14 21:46

Non avevo notato il messaggio...
Immagino che rimanga bloccato sulle istruzioni di "attesa disponibilita' file finale"; se e' cosi', credo che il problema stia nel fatto che NFile calcolato sia diverso da "nome del file creato in stampa".
Interrompi la macro (usando i tasti Contr-Pausa Interr, o altro metodo che mandi in debug il codice); poi, nella finestra del vba, premi Contr-g per aprire la "finestra Immediata"; digita "? NFile" (senza gli apici) piu' Enter, e prendi nota del valore che viene visualizzato in risposta. Poi cerca il file pdf e prendi nota del nome del file. Riporta queste due informazioni nel tuo prossimo messaggio e vedremo come procedere.
Per "portarsi avanti" scrivi anche il valore delle celle B1 ed F1 del foglio che e' stato "stampato" e su cui la macro si e' bloccata.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro per stampa pdf di un area di stampa

Postdi fastbike73 » 11/09/14 07:30

Anthony47 ha scritto:....prendi nota del valore che viene visualizzato in risposta. Poi cerca il file pdf e prendi nota del nome del file. Riporta queste due informazioni nel tuo prossimo messaggio e vedremo come procedere.
Per "portarsi avanti" scrivi anche il valore delle celle B1 ed F1 del foglio che e' stato "stampato" e su cui la macro si e' bloccata.

Ciao

Buongiorno Anthony, ti ringrazio per avermi risposto.
Riporto di seguito i dati da te richiesti:
?NFile = MILAZZO-Riclassificati-GIUGNO
Nome Pdf creato = MILAZZO-Riclassificati-GIUGNO
B1 = MILAZZO
F1 = GIUGNO

Quando ho bloccato la macro e ho eseguito le tue istruzioni, successivamente mi sono accorto che c'è questa funzione Do Loop che
non termina mai... sono rimasto per oltre 10 minuti a vedere se andava avanti....

Codice: Seleziona tutto
'attesa disponibilita' file finale
Do
   DoEvents
Loop Until Dir(PercF & NFile) = NFile
fastbike73
Win 10 & Office365
Filemaker Pro v. 13
fastbike73
Utente Senior
 
Post: 256
Iscritto il: 23/04/14 10:54

Re: Macro per stampa pdf di un area di stampa

Postdi Anthony47 » 11/09/14 22:14

mi sono accorto che c'è questa funzione Do Loop che non termina mai...
Conferma l' ipotesi che avevo fatto.
Aggiungi l' istruzione marcata "<<< AGGIUNGERE" in questa posizione:
Codice: Seleziona tutto
Dim objPDFCreator
If Ucase(Right(NFile, 4))<>".PDF" then NFile = NFile & ".pdf"      '<<< AGGIUNGERE
On Error Resume Next

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro per stampa pdf di un area di stampa

Postdi fastbike73 » 12/09/14 07:23

Buongiorno Anthony, intanto ti ringrazio per l'aiuto che mi stai dando.
Ho inserito l'istruzione che mi hai suggerito ma il risultato non cambia. Esegue la macro,
crea il file pdf con il nome scritto (a mio parere) in maniera corretta ma la
macro non termina e sono costretto ad andarla a chiudere dall'editor del vba.
Forse ho sbagliato dove inserire l'istruzione?? Per sicurezza ti riporto l'intero codice!!

Codice: Seleziona tutto
Sub macroPrintPDF1(ByVal PercF As String, ByVal NFile As String)

Dim objPDFCreator
If UCase(Right(NFile, 4)) <> ".Pdf" Then NFile = NFile & ".Pdf"       '<------- istruzione suggerita
On Error Resume Next
    If Dir(PercF & NFile) = PercF & NFile Then Kill (PercF & NFile)
    Shell "taskkill /f /im PDFCreator.exe", vbHide
Application.Wait (Now + TimeValue("0:00:05"))
On Error GoTo 0

Set objPDFCreator = CreateObject("PDFCreator.clsPDFCreator")
aaa1 = objPDFCreator.cProgramIsRunning

With objPDFCreator
.cStart "/NoProcessingAtStartup"
.cOption("UseAutosave") = 1
.cOption("UseAutosaveDirectory") = 1
.cOption("AutosaveDirectory") = PercF
.cOption("AutosaveFilename") = NFile
.cOption("AutosaveFormat") = 0
aaa = .cOption("AutosaveFilename")
.cVisible = False
.cClearCache
End With
'
ActiveSheet.PrintOut Copies:=1, ActivePrinter:="PDFCreator"   'stampa "Foglio"
objPDFCreator.cPrinterStop = False

'attesa disponibilita' file finale
Do
   DoEvents
Loop Until Dir(PercF & NFile) = NFile
'
'clear finale oggetto e kill processo
Set objPDFCreator = Nothing
Shell "taskkill /f /im PDFCreator.exe", vbHide
'
End Sub

Sub PrintF12()
'Sheets("P&L_Negozi").Select
     PercF = "C:\Excel\Riclassificati"
     NFile = Range("B1").Value & "-" & "Riclassificati" & "-" & Range("F1").Value
     Call macroPrintPDF1(PercF & "\", NFile)
End Sub
fastbike73
Win 10 & Office365
Filemaker Pro v. 13
fastbike73
Utente Senior
 
Post: 256
Iscritto il: 23/04/14 10:54

Re: Macro per stampa pdf di un area di stampa

Postdi Anthony47 » 12/09/14 14:47

Devi scrivere Then NFile = NFile & ".pdf" e non Then NFile = NFile & ".Pdf"

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro per stampa pdf di un area di stampa

Postdi fastbike73 » 12/09/14 16:44

Ciao Anthony, sto legendo adesso il tuo messaggio e mi verrebbe da dirmi
" *********** ******** ******* ****** " .
Ti ringrazio ancora una volta e ti chiedo scusa per l'errore!!!
Funziona tutto alla perfezione così!!!
Saluti.
fastbike73
Win 10 & Office365
Filemaker Pro v. 13
fastbike73
Utente Senior
 
Post: 256
Iscritto il: 23/04/14 10:54

Re: Macro per stampa pdf di un area di stampa

Postdi fastbike73 » 20/09/14 11:16

Riprendo questa mia discussione per avere un ulteriore aiutino relativamente alla macro che stampa in pdf (perfettamente funzionante). Nella fattispecie la macro salva il pdf in una Directory ben precisa, adesso vorrei che lo salvasse nella directory
in cui si trova il file excel da cui è stata generata la stampa.
Per la vostra migliore comprensione e per permettervi di aiutarmi al meglio vi riporto il codice della macro....

Codice: Seleziona tutto
Sub PrintF12()
'Sheets("P&L_Negozi").Select
     PercF = "C:\Excel\Riclassificati"
     NFile = Range("B1").Value & "-" & "Riclassificati" & "-" & Range("F1").Value
     Call macroPrintPDF1(PercF & "\", NFile)
End Sub


Vi ringrazio sin d'ora per l'aiuto e per l'interesse.
fastbike73
Win 10 & Office365
Filemaker Pro v. 13
fastbike73
Utente Senior
 
Post: 256
Iscritto il: 23/04/14 10:54

Re: Macro per stampa pdf di un area di stampa

Postdi fastbike73 » 20/09/14 11:41

Ho risolto in questo modo...

fastbike73 ha scritto:
Codice: Seleziona tutto
Sub PrintF12()
'Sheets("P&L_Negozi").Select
     'PercF = "C:\Excel\Riclassificati"
     PercF = Trim(ThisWorkbook.Path)&"\"  '<<<<<<<<<<<<< Ho risolto così
     NFile = Range("B1").Value & "-" & "Riclassificati" & "-" & Range("F1").Value
     Call macroPrintPDF1(PercF & "\", NFile)
End Sub


Vi ringrazio sin d'ora per l'aiuto e per l'interesse.
fastbike73
Win 10 & Office365
Filemaker Pro v. 13
fastbike73
Utente Senior
 
Post: 256
Iscritto il: 23/04/14 10:54

Re: Macro per stampa pdf di un area di stampa

Postdi Flash30005 » 21/09/14 00:32

Veramente non capisco a cosa serva il trim qui
Codice: Seleziona tutto
PercF = Trim(ThisWorkbook.Path)&"\"

puoi tranquillamente mettere
Codice: Seleziona tutto
PercF = ThisWorkbook.Path & "\"

Excel non aggiunge spazi al Path

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Macro per stampa pdf di un area di stampa

Postdi fastbike73 » 22/09/14 09:40

Flash30005 ha scritto:Veramente non capisco a cosa serva il trim qui
....
Excel non aggiunge spazi al Path

ciao


Ciao Flash, ti ringrazio per la risposta. Provvedo a fare la modifica.
A presto.
fastbike73
Win 10 & Office365
Filemaker Pro v. 13
fastbike73
Utente Senior
 
Post: 256
Iscritto il: 23/04/14 10:54


Torna a Applicazioni Office Windows


Topic correlati a "Macro per stampa pdf di un area di stampa":


Chi c’è in linea

Visitano il forum: Nessuno e 37 ospiti