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

[EXCEL] stampare un file in PDF con una macro

Postdi brikki » 13/01/12 13:47

ciao tutti...
vi chiedo un aiutino.
Ho creato questa macro (unendo varie parti di codice trovate in rete) che mi permette di creare un file PDF il cui nome è indicato nella cella B6 del mio foglio Excel.
Codice: Seleziona tutto
Sub crea_PDF()
nome = Range("B6").Value
Perc = "C:\Documents and Settings\riccardo\Desktop\"
Application.ActivePrinter = "PDFCreator su Ne00:"
ActiveWorkbook.PrintOut Copies:=1, ActivePrinter:= _
"PDFCreator su Ne00:", Collate:=True, PrintToFile:=True, PrToFileName:=Perc & nome & ".pdf"
End Sub

quando cerco di visualizzare il file adobre reader mi spara un messaggio annunciandomi l'impossibilità di aprire il file appena creato perchè il tipo di file non è supportato :eeh: .
Sapete per caso dirmi da cosa potrebbe dipendere?
Adobe è aggiornato all'ultima versione, se creo il file pdf a mano dello stesso foglio non c'è nessun problema.
GRAZIE
brikki
Utente Junior
 
Post: 23
Iscritto il: 04/01/12 11:34

Sponsor
 

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

Postdi jumpjack » 13/01/12 14:21

A me con la tua macro viene fuori un file .pdf ... che però sembra un file postrcript, almeno a giudicare dal conenuto (è un file di testo!)

Se però elimini la parte che assegna il nome al file, funziona! :?:
jumpjack
Utente Junior
 
Post: 67
Iscritto il: 27/08/10 14:27

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

Postdi jumpjack » 13/01/12 14:37

jumpjack
Utente Junior
 
Post: 67
Iscritto il: 27/08/10 14:27

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

Postdi brikki » 16/01/12 07:54

ciao, GRAZIE PER LA RISPOSTA,
ho provato a leggere tutto quello che c'è nel link che mi hai mandato, ma non ho capito molto (forse niente tra inglese e termini tecnici)... allora ho provato ad incollare il codice e ad associale la nuova macro, ma nulla... non funziona. forse nn ho capito cosa devo settare nella macro e nelle opzioni di PDFCreator... tu lo hai capito?

P.S.:
cosa intendi per
Se però elimini la parte che assegna il nome al file, funziona!
?
brikki
Utente Junior
 
Post: 23
Iscritto il: 04/01/12 11:34

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

Postdi jumpjack » 16/01/12 09:30

Se nella tua macro togli :

, PrToFileName:=Perc & nome & ".pdf"


allora funziona.

Senno' copi tutta la macro che ti ho linkato, e funziona (ma prima devi andare su Strumenti--> Riferimenti nella finestra VBA, e aggiungere PDFCreator).
jumpjack
Utente Junior
 
Post: 67
Iscritto il: 27/08/10 14:27

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

Postdi brikki » 16/01/12 11:18

RISOLTO!

jumpjack... sei potentissimo !!!!

GRAZIE! :) :)

= per tutti quelli che hanno lo stesso problema =

ho copiato la macro che mi ha gentilmente linkato JUMPJACK
e ho spuntato PDFCreator da Strumenti--> Riferimenti nella finestra VBA
brikki
Utente Junior
 
Post: 23
Iscritto il: 04/01/12 11:34

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

Postdi Anthony47 » 16/01/12 21:20

Se vuoi evitare di spuntare il riferimento alla libreria PDFCreator, ad esempio se devi usare la macro su piu' pc, devi variare
Non
Dim pdfjob As PDFCreator.clsPDFCreator
MA
Codice: Seleziona tutto
Dim pdfjob


Non
Set pdfjob = New PDFCreator.clsPDFCreator
MA
Codice: Seleziona tutto
Set pdfjob = CreateObject("PDFCreator.clsPDFCreator")


Per un minimo di teoria potresti guardare qui: viewtopic.php?f=26&t=94107&p=538345#p538227

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

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

Postdi brikki » 26/01/12 10:00

...azzo... scusami non avevo visto che avevi risposto...
GRAZIE ANCORA!
brikki
Utente Junior
 
Post: 23
Iscritto il: 04/01/12 11:34

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

Postdi h224g » 18/02/12 16:22

Ciao a tutti,

non capisco perchè questa macro non mi viene eseguita sul mio excel 2007, va solo adattata prendendo il nome dle file dalla cella B14 del foglio "1", ma per il resto dovrebbe funzionare.
sapete dirmi dove sbaglio?
Win Xp + office 2003 ita
h224g
Utente Junior
 
Post: 21
Iscritto il: 18/02/12 02:06

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

Postdi Anthony47 » 18/02/12 17:29

Ciao h224g, benvenuto nel forum.
Che macro stai usando e quale e' l' esito?

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

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

Postdi h224g » 19/02/12 11:25

ciao Anthony,

grazie per la risposta, sto utilizzando la macro postata da jumpjack (non posso ancora inserire links) con le modifiche indicate da te nel messaggio del 16/01.
Il messaggio di errore che mi appare su excel 2007 dice "there was an error encountered. PDFCreator has has been terminated. Please try again"

piero
Win Xp + office 2003 ita
h224g
Utente Junior
 
Post: 21
Iscritto il: 18/02/12 02:06

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

Postdi Anthony47 » 19/02/12 23:13

Quell' errore dice semplicemente che una istruzione e' andata in errore nella macro; elimina la riga On Error GoTo EarlyExit e riprova, almeno saprai quale istruzione e' andata in errore.
Vorrei anche sapere quale versione di PDFCreator hai installato sul tuo PC.

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

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

Postdi h224g » 19/02/12 23:53

riga cancellata, ora mi appare errore di run-time '429' il componente ActiveX non è in grado di creare l 'ggetto

e mi evidenzia questa riga
Set pdfjob = CreateObject("PDFCreator.clsPDFCreator")


PDFCreator 0.8.0 ma dovrò usare il foglio su più pc dove immagino sarà installata la versione più recente



Codice: Seleziona tutto
Sub PrintToPDF_Early()
'Author       : Ken Puls ([i]link[/i])
'Macro Purpose: Print to PDF file using PDFCreator
'   (Download from [i]link[/i])
'   Designed for early bind, set reference to PDFCreator

    Dim pdfjob
    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
    Application.ScreenUpdating = False
    Set pdfjob = CreateObject("PDFCreator.clsPDFCreator")

    'Check if PDFCreator is already running and attempt to kill the process if so
    Do
        bRestart = False
        Set pdfjob = CreateObject("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
Win Xp + office 2003 ita
h224g
Utente Junior
 
Post: 21
Iscritto il: 18/02/12 02:06

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

Postdi Anthony47 » 20/02/12 00:16

Hai una versione alquanto vecchia, potrebbe non avere il supporto per il vba; installa una versione piu' recente (io ho la 1.2)

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

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

Postdi h224g » 20/02/12 00:43

ciao Anthony

aggiornato alla 1.2.3
e in effetti ora la VBA parte e avvia la stampa in pdf, senza dare errori, solo che il pdf non viene generato, fatto la prova creandolo manualmente.

vorrei che prendesse il nome dalla cella "B14" del foglio "1", ma non mi sembra di leggere nella vba riferimenti alla posizione e nome del file, o sbaglio?



grazie
Win Xp + office 2003 ita
h224g
Utente Junior
 
Post: 21
Iscritto il: 18/02/12 02:06

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

Postdi Anthony47 » 20/02/12 15:44

Invece di farmi debuggare macro di altri, prova a usare la macro presentata qui:
viewtopic.php?t=94224#p538887

Per prendere il nome da Foglio1!B14 dovrai modificare la riga
Nome = "mona.pdf" 'Range("B6").Value
In
Nome = Sheets("Foglio1").Range("B14").Value
NB: B14 deve contenere il nome piu' l' estensione, es pippo.pdf

Dovrai anche correggere la riga
If Dir(PercF & NFile) = PercF & NFile Then Kill (PercF & NFile)
in
If Dir(PercF & NFile) = NFile Then Kill (PercF & NFile)


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

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

Postdi h224g » 20/02/12 19:30

fatto, ora mi da:

"errore di compilazione: variabile non definita"
e mi evidenzia in grigio il 1° "PercF" della riga:

If Dir(PercF & NFile) = NFile Then Kill (PercF & NFile)

e in giallo la prima riga
Sub macroPrintPDF()
Win Xp + office 2003 ita
h224g
Utente Junior
 
Post: 21
Iscritto il: 18/02/12 02:06

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

Postdi h224g » 20/02/12 19:33

ho dimenticato di dirti:

a me interessa stampare in pdf il foglio "2", quindi non il foglio "1", cambia qualcosa da dove lancio la macro o la compilazione della macro stessa?

grazie per la pazienza

piero

h224g ha scritto:fatto, ora mi da:

"errore di compilazione: variabile non definita"
e mi evidenzia in grigio il 1° "PercF" della riga:

If Dir(PercF & NFile) = NFile Then Kill (PercF & NFile)

e in giallo la prima riga
Sub macroPrintPDF()
Win Xp + office 2003 ita
h224g
Utente Junior
 
Post: 21
Iscritto il: 18/02/12 02:06

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

Postdi Anthony47 » 20/02/12 23:28

Se ti da quell' errore e' perche' hai impostato Option Explicit in testa al tuo modulo; o elimini questa impostazione oppure devi dichiarare tutte le variabili prima di poterle usare oppure metti la Sub macroPrintPDF in un nuovo Modulo (Menu /Inserisci /Modulo).
La macro stampa il foglio attivo, quindi se ti interessa stampare Foglio2 devi selezionare il foglio prima di lanciare la macro.

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

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

Postdi h224g » 22/02/12 09:14

...

MA E' PERFETTO!!!

ho messo anche il tastino associato alla macro sul foglio interessato, e non viene stampato.
Devo solo aggiungere la directory dove inviare i pdf.

ok, thanks, a chi e dove devo offrire 2 birre ? :-)

Piero
Win Xp + office 2003 ita
h224g
Utente Junior
 
Post: 21
Iscritto il: 18/02/12 02:06

Prossimo

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 60 ospiti