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