Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[EXCEL] stampare un file in PDF con una macro

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

Re: [EXCEL] stampare un file in PDF con una macro

Postdi Flash30005 » 03/09/12 09:12

Quando avvi la macro di stampa pdf
in EI4 c'è scritto qualcosa?
da lì prende il nome del file senza di esso va in errore

Sono andato alla pagina 1 di questo topic ho preso l'ultima macro postata da Anthony e la replico perché è perfetta
Codice: Seleziona tutto
Sub macroPrintPDF()
'QUESTA FUNZIONA, le altre sono tutte prototipi manipolati
'Le righe marcate <<< e >>> sono alternative; quelle >>> richiedono
'   di impostare il riferimento alla libreria PDFCreator (menu /Riferimenti /...)
'Come e' ora NON e' necessario avere il "Riferimento" a pdfcreator nel vba
'
'Dim objPDFCreator As PDFCreator.clsPDFCreator '>> Early Bind
Dim objPDFCreator  '<<<  Late Bind
Dim Perc As String
Dim Nome As String
'
Nome = "mona.pdf" 'Worksheets("ORIGINALE").Range("EI4").Value   '<<<< assicurati che i EI4 ci sia una stringa o un numero (senza caratteri speciali)
Perc = ThisWorkbook.Path & "\pdf_prelievi\"
'
On Error Resume Next
    If Dir(Perc & Nome) = Nome Then Kill (Perc & Nome)
    Shell "taskkill /f /im PDFCreator.exe", vbHide
Application.Wait (Now + TimeValue("0:00:05"))
On Error GoTo 0
'
'Set objPDFCreator = New PDFCreator.clsPDFCreator '>>>
Set objPDFCreator = CreateObject("PDFCreator.clsPDFCreator") '<<
aaa1 = objPDFCreator.cProgramIsRunning

With objPDFCreator
.cStart "/NoProcessingAtStartup"
.cOption("UseAutosave") = 1
.cOption("UseAutosaveDirectory") = 1
.cOption("AutosaveDirectory") = Perc
.cOption("AutosaveFilename") = Nome
.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(Perc & Nome) = Nome
'
'clear finale oggetto e kill processo
Set objPDFCreator = Nothing
Shell "taskkill /f /im PDFCreator.exe", vbHide
'
End Sub


Quindi inizialmente avvii la tua macro di compilazione modulo,
alla fine della tua macro inserendo la chiamata a questa avrai il modulo in Pdf
Codice: Seleziona tutto
    Sheets("ORIGINALE").Range("F76").Value = Sheets("database").Cells(riga, 46).Value  '<<<< esistente
    Worksheets("ORIGINALE").Select   '<<<<<<<<<<< aggiungere
    macroPrintPDF   '<<<<<< aggiungere
Fine_Estrai:    '<<<<<<<<<<<<<<< esistente
    Worksheets("ORIGINALE").Select   '<<<<<<<<<<<< esistente
End Sub

se vuoi stampare tutte le righe (ovvero tutti i moduli relativi alle righe del foglio "DATABASE" non devi far altro che inserire un ciclo For...next calcolando il numero di righe....

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Sponsor
 

Re: [EXCEL] stampare un file in PDF con una macro

Postdi coupe79 » 03/09/12 15:03

ciao flash ,
sei mitico!! ci sono solo due piccoli problemi

1) funziona , lo salva e lo apre ,ma lo salva come mona.pdf , non con il numero del verbale, e se faccio un'altra estrazione mi sovrascrive in automatico il file creato mona.pdf

2) non sono capace di inserire il ciclo for ....next (ti inserisco le righe utili da 1 a 189) del foglio database.....puoi essere piu preciso?

grazie mille!!
ciao
coupe79
Utente Junior
 
Post: 36
Iscritto il: 29/08/12 15:03

Re: [EXCEL] stampare un file in PDF con una macro

Postdi coupe79 » 03/09/12 15:36

ho corretto meglio e adesso mi salva il nome con il numero scheda, pero secondo me c'e' un blocco , perche alla fine non mi svuota il verbale come faceva prima, non mi da nessun errore , ma la macro va in pausa, se premo su pausa si evidenzia in giallo la stringa "do events"......E UN BLOCCO VERO?

se voglio generare un imput box che mi chieda da quale verbale a quale verbale stampare cosa dovrei fare?
coupe79
Utente Junior
 
Post: 36
Iscritto il: 29/08/12 15:03

Re: [EXCEL] stampare un file in PDF con una macro

Postdi Flash30005 » 03/09/12 15:44

coupe79 ha scritto:1) funziona , lo salva e lo apre ,ma lo salva come mona.pdf , non con il numero del verbale

:lol:
nella macro c'è questa riga
Codice: Seleziona tutto
Nome = "mona.pdf" 'Worksheets("ORIGINALE").Range("EI4").Value & ".pdf"  '<<<< assicurati che i EI4 ci sia una stringa o un numero (senza caratteri speciali)

dove avevo commentato il riferimento della cella dove prende il nome del file è sufficiente togliere "mona.pdf" e scommentare il resto (tranne l'ultimo commento) in pratica così:
Codice: Seleziona tutto
Nome = Worksheets("ORIGINALE").Range("EI4").Value & ".pdf"  '<<<< assicurati che i EI4 ci sia una stringa o un numero (senza caratteri speciali)


Per quanto riguarda il ciclo for next si può fare ma devi decidere se vuoi inserire il nome del verbale nell'InputBox oppure usare il ciclo for next perché le due cose cozzano.

Perché mi dici che le righe sono 189?
hai un range prefissato oppure sono tutte le righe del foglio "Database"?
nel secondo caso possono essere calcolate con il codice e saranno stampate sia se sono 2 sia se sono 1000.

Ciao

EDIT: ci siamo accavallati con i messaggi
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [EXCEL] stampare un file in PDF con una macro

Postdi Flash30005 » 03/09/12 15:48

Io ho lasciato la tua macro e se prima ripuliva il foglio deve continuare a farlo
ma vedo che non richiami la macro svuota :roll:
aggiungi questa riga alla macro
Codice: Seleziona tutto
    Worksheets("ORIGINALE").Select  '<<<<<<<<<Esistente
    macroPrintPDF   '<<<<<<<<<Esistente
    svuota                   <<<<<<<<<<<<<<<<<<<<<<< Aggiungere chiamata macro  "Svuota"
Fine_Estrai:   '<<<<<<<<<Esistente
        Worksheets("ORIGINALE").Select   '<<<<<<<<<Esistente
End Sub   '<<<<<<<<<Esistente


Per il range dei verbali da stampare puoi usare una Userform con due Tex box o due Combox
nel primo caso se vuoi inserire il range in forma di righe es: dalla riga 2 alla riga 3 verranno stampati i verbali 1338, 1337 (come da tuo foglio), nel secondo caso nel combox potai inserire dal verbale 1337 al 1338.
In tutte e due i casisaranno stampati i verbali dei numeri compresiin questi range

fai sapere

Ciao

EDIT ore 18:00 - Il numero progressivo in colonna A, foglio "Origine", è in ordine decrescente per tua esigenza oppure può essere ordinato in ordine crescente?

Aggiungo il file come lo intendo Download File Modificato
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [EXCEL] stampare un file in PDF con una macro

Postdi coupe79 » 03/09/12 18:15

Allora , per quanto riguarda il database e le righe sono inserite in ordine decrescente per esigenza :-(

Per quanto riguarda il criterio di stampa vorrei potergli dire io da quale verbale a quale verbale stampare perché questi varieranno ogni anno, e da ciò che ho capito con l'altro sistema dovrei per forza entrare in VBA e modificare il codice...

Quindi puoi spiegarmi cosa devo fare per generare un COMBOX"??
coupe79
Utente Junior
 
Post: 36
Iscritto il: 29/08/12 15:03

Re: [EXCEL] stampare un file in PDF con una macro

Postdi Flash30005 » 03/09/12 18:17

Scusa ma avevo modificato il post e forse ti è sfuggito
dopo l'Edit c'è il file allegato
Fai sapere

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [EXCEL] stampare un file in PDF con una macro

Postdi coupe79 » 04/09/12 08:25

CIAO flash,
stavo provando il tuo file , appena lo apro mi esce questa finestra di run time'1004' worksheets dell'oggetto global non riuscito

non capisco forse sbaglio la posizione del file ??? lo devo mettere in qualche directory particolare?
coupe79
Utente Junior
 
Post: 36
Iscritto il: 29/08/12 15:03

Re: [EXCEL] stampare un file in PDF con una macro

Postdi Flash30005 » 04/09/12 09:35

In nessuna posizione particolare
ovunque lo metta funziona
Non capisco cosa intendi per "appena lo apro" (appena avvi il file excel o quando avvii la macro tramite tuo pulsante giallo "ESTRAI E STAMPA")
Quale versione di excel hai?
Stai usando il mio file "PROVA GESTIONE PRELIEVI_v3.xls"?
hai modificato qualcosa nel file?

L'unica cosa è devi creare questa cartella
"pdf_prelievi" nella directory dove hai inserito il file xls (si può aggiungere il codice che la crea in automatico nela caso non esista)
es.:
se il file excel (programma) si trova in C:\MieiDocumenti\PrgExcel\.
devi creare una sottocartella "pdf_prelievi" perché in questa directory andranno inseriti tutti i file .pdf
in questo percorso C:\MieiDocumenti\PrgExcel\pdf_prelievi\.

In quale modulo e macro si trova la riga di errore?
invia uno screenshot del debug

Fai sapere

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [EXCEL] stampare un file in PDF con una macro

Postdi coupe79 » 04/09/12 16:38

CIAO,

allora quando apro il file, excel lo blocca non abilitando da subito le macro, appena le abilito mi da l'errore run time che ti dicevo stamattina.
io ho office 2010.
e la riga di errore si torva nel modulo 3 , che è quello nuovo che hai creato tu del tuo file.

P.s. non ho modificato nulla , l'ho scaricato , l'ho aperto e va cosi
coupe79
Utente Junior
 
Post: 36
Iscritto il: 29/08/12 15:03

Re: [EXCEL] stampare un file in PDF con una macro

Postdi Flash30005 » 04/09/12 20:32

All'apertura del file esiste solo la voce che richiama la tua macro "Inizializza"
che io non ho modificato
ma non mi sai dire in quale riga si blocca e in quale macro

Invia uno screenshot (foto dello schermo) che ottieni con il comando Stamp o Print sulla tastiera
lo incolli in un programma di immagini (anche paint di windows va bene) lo salvi come jpg e lo invii ad un server per immagini
come questo
fai l'upload e copi il link fornito dal server
lo inserisci nel prossimo post usando il Tag "Img" (vedi in alto nel menu dell'editor)

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [EXCEL] stampare un file in PDF con una macro

Postdi coupe79 » 05/09/12 12:06

Ciao flash!!!

Allora io non so cosa aveva ieri il mio pc, fatto sta che stamattina quando ho provato ad aprire il file per generare gli screenshot dei messaggi di errore , funzionava alla perfezione tutto , sei grande , ti ringrazio di cuore, se sei dalle mie parti ti offro volentieri una birra!! :-)
Io sono in Puglia , spero di poter contare ancora su di te in caso di altri problemi con le macro.

P.s. Nn amo andare sempre a rimorchio , conosci qualche testo facile da capire con il quale sviluppare la mia cultura sulle macro??

Grazie ancora mille Coupe79

Ciao
coupe79
Utente Junior
 
Post: 36
Iscritto il: 29/08/12 15:03

Re: [EXCEL] stampare un file in PDF con una macro

Postdi Flash30005 » 05/09/12 14:15

coupe79 ha scritto:... stamattina quando ho provato ad aprire il file e..., funzionava alla perfezione tutto

Dilemmi del SO o di Office :roll:

per i testi ce ne sono diversi e penso che ti stancheresti a leggerli
per un utente "occasionale", penso sia più pratico cercare quello che serve nel momento in cui occorra
magari registrando una macro mentre si effettuano le operazioni volute e andare a leggere il codice prodotto, dopo averla fermata.
Altre importanti informazioni le puoi trovare nella guida in linea sia per le formule che per il codice vba (per quest'ultimo in ambiente vba, selezionando la chiave e premendo F1).

Ma se ti dico tutte queste cose... poi io cosa bevo? :D

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [EXCEL] stampare un file in PDF con una macro

Postdi coupe79 » 05/09/12 22:37

Flash,

A DISPOSIZIONE

Ciao alla prossima grazie ancora!!
coupe79
Utente Junior
 
Post: 36
Iscritto il: 29/08/12 15:03

Re: [EXCEL] stampare un file in PDF con una macro

Postdi emanuelei » 27/10/12 16:01

Ciao a tutti!

Sono nuovo di questo forum sul quale ho già trovato molte informazioni utili.
Mi unisco ai tanti che cercano di creare una macro per stampare un foglio excel con Pdf Creator.
Utilizzo la macro che riporto qui di seguito e suggerita da questo forum ma ho ancora qualche domanda:

1) dove vengono salvati i file
2) con che nome
3) posso chiedere alla macro di stampare fogli diversi dello stesso documento excel (ovviamente con titoli diversi)

Grazie per il vostro aiuto!

Emanuele

Sub PrintToPDF_Early()
'Author : Ken Puls (www.excelguru.ca)
'Macro Purpose: Print to PDF file using PDFCreator
' (Download from http://sourceforge.net/projects/pdfcreator/)
' Designed for early bind, set reference to PDFCreator

Dim pdfjob As PDFCreator.clsPDFCreator
Dim sPDFName As String
Dim sPDFPath As String
Dim bRestart As Boolean

'/// Change the output file name here! ///
sPDFName = "testPDF.pdf"
sPDFPath = ActiveWorkbook.Path & Application.PathSeparator

'Check if worksheet is empty and exit if so
If IsEmpty(ActiveSheet.UsedRange) Then Exit Sub

'Activate error handling and turn off screen updates
On Error GoTo EarlyExit
Application.ScreenUpdating = False
Set pdfjob = New PDFCreator.clsPDFCreator

'Check if PDFCreator is already running and attempt to kill the process if so
Do
bRestart = False
Set pdfjob = New PDFCreator.clsPDFCreator
If pdfjob.cStart("/NoProcessingAtStartup") = False Then
'PDF Creator is already running. Kill the existing process
Shell "taskkill /f /im PDFCreator.exe", vbHide
DoEvents
Set pdfjob = Nothing
bRestart = True
End If
Loop Until bRestart = False

'Assign settings for PDF job
With pdfjob
.cOption("UseAutosave") = 1
.cOption("UseAutosaveDirectory") = 1
.cOption("AutosaveDirectory") = sPDFPath
.cOption("AutosaveFilename") = sPDFName
.cOption("AutosaveFormat") = 0 ' 0 = PDF
.cClearCache
End With

'Delete the PDF if it already exists
If Dir(sPDFPath & sPDFName) = sPDFName Then Kill (sPDFPath & sPDFName)

'Print the document to PDF
ActiveSheet.PrintOut copies:=1, ActivePrinter:="PDFCreator"

'Wait until the print job has entered the print queue
Do Until pdfjob.cCountOfPrintjobs = 1
DoEvents
Loop
pdfjob.cPrinterStop = False

'Wait until the file shows up before closing PDF Creator
Do
DoEvents
Loop Until Dir(sPDFPath & sPDFName) = sPDFName

Cleanup:
'Release objects and terminate PDFCreator
Set pdfjob = Nothing
Shell "taskkill /f /im PDFCreator.exe", vbHide
On Error GoTo 0
Application.ScreenUpdating = True
Exit Sub

EarlyExit:
'Inform user of error, and go to cleanup section
MsgBox "There was an error encountered. PDFCreator has" & vbCrLf & _
"has been terminated. Please try again.", _
vbCritical + vbOKOnly, "Error"
Resume Cleanup
End Sub
emanuelei
Utente Junior
 
Post: 21
Iscritto il: 27/10/12 15:51

Re: [EXCEL] stampare un file in PDF con una macro

Postdi Flash30005 » 27/10/12 17:23

Ciao Emanuelelei e benvenuto nel Forum

Alle prime due domande la risposta è questa (n el codice macro)
Codice: Seleziona tutto
sPDFName = "testPDF.pdf"
 sPDFPath = ActiveWorkbook.Path & Application.PathSeparator


Il nome del file sarà (sempre)
"testPDF.pdf"
mentre la directory di salvataggio del file è quella che contiene il file di excel che stai usando con la macro
"sPDFPath"
(il nome cambia sempre a secondo della posizione del file di excel)
ActiveWorkbook.Path & Application.PathSeparator

Se vuoi un percorso fisso devi modificare questa riga
sPDFPath = "C:\TuoPercorso\TuaCartella\"

Per quanto riguarda la terza domanda
una volta verificato il funzionamento su un foglio di lavoro
potresti fare un ciclo for next
Codice: Seleziona tutto
For F = 1 To Worksheets.Count
Sheets(F).Select
'<<< qui inserisci la macro che crea il pdf del singolo foglio
'<<<<
'<<<<
Next F


Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [EXCEL] stampare un file in PDF con una macro

Postdi emanuelei » 27/10/12 20:14

Flash ti ringrazio molto!

Il tuo aiuto è davvero prezioso!

Come avrai capito non sono un esperto di VBA... cerco di guardare e capire ma buona parte resta un po' un mistero!

Dunque: nessun problema per il cambio del nome (ho inserito Range("D8") così da dare al file il nome del contenuto di una cella) e per il percorso dove salvare il file.

Non mi è chiaro invece come far ripetere l'operazione per i 3 fogli di cui si compone il mio file excel.

Domanda: devo iniziare il codice della macro con:

For F = 1 To Worksheets.Count
Sheets(F).Select

inserire la macro tale e come l'ho definita nel mio messaggio precedente dal punto:

Dim pdfjob As PDFCreator.clsPDFCreator
Dim sPDFName As String
Dim sPDFPath As String

etc...

e concludere con

'<<<<
'<<<<
Next F

End Sub

Dove e come inserisco la macro per il 3° e ultimo foglio?


Nuovamente di ringrazio per il tuo aiuto e mi scuso per la banalità delle mie domande!!
emanuelei
Utente Junior
 
Post: 21
Iscritto il: 27/10/12 15:51

Re: [EXCEL] stampare un file in PDF con una macro

Postdi Flash30005 » 27/10/12 22:34

;) Il ciclo for next va inserito all'inizio della macro funzionante (creatrice di file pdf)
e mi sembra che tu l'abbia fatto

Questa macro così compilata va inserita in un modulo (es.: Modulo1)
e la macro stessa provvederà ad effettuare la stampa pdf del foglio1, foglio2, foglio3

quindi il tuo dubbio non ha motivo di esistere

In caso di problemi siamo qui

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [EXCEL] stampare un file in PDF con una macro

Postdi emanuelei » 28/10/12 12:51

Flash... abbi pazienza!! :-)

Allora la situazione è questa:

1) in alto, nella pagina VBA, mi riporta "nomedelfile.xls - [Module2(Code)]", il che mi fa pensare che la macro sia già inserita in un modulo

2) si stampa solo il foglio indicato nel comando "For F = 1 To Worksheets.Count" (ovvero se sostituisco "For F = 2 To Worksheets.Count" si stampa -solo- il secondo foglio del mio file). Questo avviene anche se nel file xls seleziono i fogli che vorrei si stampassero.

3) alla fine dell'esecuzione della macro il file xls "bugga", la schermata diventa nera e sono costretto a chiudere e riaprire il file

Qui di seguito la macro per intero tale come la sto utilizzando.

Una volta di più... grazie e buona domenica!



Sub PrintToPDF_Early()
'Author : Ken Puls (www.excelguru.ca)
'Macro Purpose: Print to PDF file using PDFCreator
' (Download from http://sourceforge.net/projects/pdfcreator/)
' Designed for early bind, set reference to PDFCreator

For F = 1 To Worksheets.Count
Sheets(F).Select

Dim pdfjob As PDFCreator.clsPDFCreator
Dim sPDFName As String
Dim sPDFPath As String
Dim bRestart As Boolean

'/// Change the output file name here! ///
sPDFName = Range("D8")
sPDFPath = "C:\Users\Emanuele\Desktop\fatture locataire test"

'Check if worksheet is empty and exit if so
If IsEmpty(ActiveSheet.UsedRange) Then Exit Sub

'Activate error handling and turn off screen updates
On Error GoTo EarlyExit
Application.ScreenUpdating = False
Set pdfjob = New PDFCreator.clsPDFCreator

'Check if PDFCreator is already running and attempt to kill the process if so
Do
bRestart = False
Set pdfjob = New PDFCreator.clsPDFCreator
If pdfjob.cStart("/NoProcessingAtStartup") = False Then
'PDF Creator is already running. Kill the existing process
Shell "taskkill /f /im PDFCreator.exe", vbHide
DoEvents
Set pdfjob = Nothing
bRestart = True
End If
Loop Until bRestart = False

'Assign settings for PDF job
With pdfjob
.cOption("UseAutosave") = 1
.cOption("UseAutosaveDirectory") = 1
.cOption("AutosaveDirectory") = sPDFPath
.cOption("AutosaveFilename") = sPDFName
.cOption("AutosaveFormat") = 0 ' 0 = PDF
.cClearCache
End With

'Delete the PDF if it already exists
If Dir(sPDFPath & sPDFName) = sPDFName Then Kill (sPDFPath & sPDFName)

'Print the document to PDF
ActiveSheet.PrintOut copies:=1, ActivePrinter:="PDFCreator"

'Wait until the print job has entered the print queue
Do Until pdfjob.cCountOfPrintjobs = 1
DoEvents
Loop
pdfjob.cPrinterStop = False

'Wait until the file shows up before closing PDF Creator
Do
DoEvents
Loop Until Dir(sPDFPath & sPDFName) = sPDFName

Cleanup:
'Release objects and terminate PDFCreator
Set pdfjob = Nothing
Shell "taskkill /f /im PDFCreator.exe", vbHide
On Error GoTo 0
Application.ScreenUpdating = True
Exit Sub

EarlyExit:
'Inform user of error, and go to cleanup section
MsgBox "There was an error encountered. PDFCreator has" & vbCrLf & _
"has been terminated. Please try again.", _
vbCritical + vbOKOnly, "Error"
Resume Cleanup

'<<<<
'<<<<

Next F

End Sub
emanuelei
Utente Junior
 
Post: 21
Iscritto il: 27/10/12 15:51

Re: [EXCEL] stampare un file in PDF con una macro

Postdi Anthony47 » 28/10/12 17:21

Non voglio destabilizzare la discussione, ma una macro per stampare in pdf, derivata da quanto pubblicato sullo stesso http://www.excelguru.ca a cui fai riferimento tu, fu pubblicata qui: viewtopic.php?t=94224#p538887

Per me ha sempre funzionato, e lavora in modalita' Late binding, quindi non richiede che vengano impostati riferimenti alla libreria di pdfCreator.

Su quella io sono in grado di dire qualcosa.

Inoltre, per facilitare la leggibilita', ti raccomando di usare i "tag" Code: selezioni le righe di codice che vuoi marcare, premi il pulsante Code che trovi in testa al box di scrittura.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13904
Iscritto il: 21/03/06 16:03
Località: Ivrea

PrecedenteProssimo

Torna a Applicazioni Office Windows


Topic correlati a "[EXCEL] stampare un file in PDF con una macro":


Chi c’è in linea

Visitano il forum: Nessuno e 9 ospiti