x Flash
grazie per le info
ho fatto delle prove impostando la cartella di output del file e funziona. Questa opzione però "me la tengo nel cassetto" perché comunque non posso lasciare impostato che tutti i file che faccio in pdf mi vadano in quella cartella.
Resta il fatto che è un ottima soluzione.
Grazie
X Anthony
ho unito i vari codici e mi viene fuori questo:
- Codice: Seleziona tutto
Sub FLASH()
Perc = ThisWorkbook.Path
Slash1 = InStrRev(Perc, "\")
PercF = Left(Perc, Slash1 - 1)
Slash2 = InStrRev(PercF, "\")
PercF = Left(PercF, Slash2) & "04-OFFERTE_CONTRATTO"
Ditta = Worksheets("Riepilogo").Range("K3").Value
Offerta = "_Offerta_" & Replace(Worksheets("OFFERTA").Range("C58").Value, "/", "_")
Data = "_del_" & Replace(Worksheets("Riepilogo").Range("G1").Value, "/", ".")
NFile = Ditta & Offerta & Data & ".xls"
Sheets("OFFERTA").Select
Sheets("OFFERTA").Copy
ChDir PercF
ActiveWorkbook.SaveAs Filename:=PercF & "\" & NFile
ActiveWindow.Close
Call macroPrintPDF1(PercF & "\", NFile) '<<< AGGIUNTA
End Sub
Sub macroPrintPDF1(ByVal PercF As String, ByVal NFile As String)
'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
'
'QUESTA E' DA RICHIAMARE COME UNA FUNZIONE DA ALTRA MACRO
' Es Call macroPrintPDF1 ("C:\Documenti\","pippo.pdf")
' modificate le righe ***
'
'Dim objPDFCreator As PDFCreator.clsPDFCreator '>> Early Bind
Dim objPDFCreator '<<< Late Bind
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 = New PDFCreator.clsPDFCreator '>>>
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
Con questo codice mi salva il file con un altro nome e mi chiede comunque il percorso.
Forse sto sbagliando qualcosa.
Vedo di fare ancora un po' di prove e poi decido cosa fare.
Grazie mille intanto a entrambi
Ciao