PDA

Visualizza versione completa : Macro in excel che genera un file pdf


simon79vi
17-06-2004, 12.26.40
Ho installato nel mio pc una stampante virtuale che mi permette di creare i file .pdf.
Nella macro in excel alla fine devo "stampare" il file utilizzando la stampante virtuale in modo che venga generato il file pdf, ma ogni volta che lancio la macro mi chiede sempre il nome del file da salvare in formato .pdf
Non è possibile impostargli, con qualche istruzione, già il nome?
Questa è la riga di comando che lui esegue:

ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

Grazie

ale_pelly
18-06-2004, 11.20.22
basta aggiungere alla riga di comando che hai incollato l'istruzione ActivePrinter:

ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= "NOME STAMPANTE", Collate:=True

dove, nel tuo caso NOME STAMPANTE è il nome della stampante virtuale di stampa in pdf. Se non conosci il nome della stampante puoi ricavarlo usando il registratore di macro vedendo che nome usa quando selezioni la stampante dal menù di stampa.

ciao

simon79vi
18-06-2004, 11.40.13
ho provato, ma il mio problema è che si apre la schermata di "salva con nome" e mi tocca digitare il nome del file da salvare in formato pdf.

io devo fare in modo che venga saltata questa cosa.

ciao

ale_pelly
19-06-2004, 22.21.55
Per evitare di dover digitare il nome del file prova ad aggiungere alla riga di comando le due opzioni PrintToFIle:=True e PrToFileName uguale al nome completo del file che vuoi salvare:


PrintToFile: Se ha valore True, la stampa verrà effettuata su file.

PrToFileName: Se PrintToFile è impostato su True, questo argomento specifica il nome del file su cui si desidera stampare.

per tutte le possibili opzioni del metodo PrintOut basta comunque guardare sulla guida in linea dell'editor VisualBasic.

simon79vi
20-06-2004, 19.15.30
Ora la mia istruzione è così composta:

ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, PrintToFile:=True, PrToFileName:=aa.xls


Ma quando lancio la macro mi da errore:
Errore Run Time 424
Necessario Oggetto.

MrVortex
21-06-2004, 12.24.04
Originariamente inviato da simon79vi
Ora la mia istruzione è così composta:

ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, PrintToFile:=True, PrToFileName:=aa.xls


Ma quando lancio la macro mi da errore:
Errore Run Time 424
Necessario Oggetto.


Cerco di risolverti il problema appena reistallo excel2000 pokè non riesco a scrivere linee vba, ma abbi fiducia, 99% di riuscita, inoltre posto la soluzione in prima pagina excell ok?
Pace a te.

ale_pelly
22-06-2004, 10.29.50
ti da errore perchè il nome file di PrToFileName è stato specificato male:

1) bisogna specificare i nome completo di path
2) bisogna specificarlo come stringa di testo tra apici

un'ultima cosa: perchè hai specificato il nome file come aa.xls?? Non volevi ottenere un file .pdf?? Da quello che ho capito avresti dovuto scrivere ad esempio PrToFIleName:="c:\aa.pdf"

simon79vi
22-06-2004, 11.06.07
Ora è questa la mia istuzione:

ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:="GEN_PDF", Collate:=True, PrintToFile:=True, PrToFileName:="c:\aa.pdf"


Quando lancio la macro il file mi viene creato ma quando lo vado ad aprire Acrobat mi dice :
Errore durante l'apertura del documento. Il file non inizia con %PDF-.

Probabilmente non viene creato il pdf?

ale_pelly
22-06-2004, 11.13.35
beh... sono un po' perplesso! Io ho provato a usare quell'istruzione sia con Adobe Acrobat sia con Pdf Factory e in ambedue i casi la creazione del file è andata a buon fine. Mi sembra, se ho capito bene, che il tuo problema non sia nel codice Visual Basic (infatti l'istruzione funziona) ma nel programma che crea i pdf.

Prova a usarne un altro se puoi.

simon79vi
22-06-2004, 11.23.29
Se io stampo "a mano" il file questo mi viene creato senza alcun errore.
Quindi non penso dipenda dalla stampante virtuale.