› Sviluppare funzionalita su Microsoft Office con VBA › Macro vs PDF vs sovrascrittura
-
AutoreArticoli
-
Ciao a tutti,
so che probabilmente è una questione già affrontata più volte, ma ho già letto decine di articoli ma non riesco a risolvere la situazione.
In pratica ho un file excel, di cui voglio fare la stampa pdf con nome e percorso di salvataggio presi dai dati nelle celle (B34 è il nome, B55 il percorso). E fin qui tutto bene. Ma vorrei che ci fosse un controllo dell'esistenza del file al momento del salvataggio del pdf, per evitare di sovrascrivere per errore dei documenti.. ma questo non riesco a farlo funzionare..!
Poi ci sarebbe una chicca che vorrei aggiungere, cioè la creazione delle cartelle del percorso (sono semplicemente anno e mese) nel caso non esistessero.. ma questo sarebbe solamente la ciliegina sulla torta... l'importante è evitare la sovrascrittura.. Se qualcuno mi può aiutare.. GRAZIE!
Sub SaveAsPDF() Dim myPath As String Dim myFile As String Dim Ans As Integer myFile = Range("B34").Value myPath = ActiveSheet.Range("b55").Value If Dir(myPath & myFile) <> "" Then Ans = MsgBox("Il file esiste già. Sostituire?", vbQuestion + vbYesNo, "File già presente!") If Ans = vbNo Then Exit Sub End If ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=myPath & myFile, _ Quality:=xlQualityStandard, IncludeDocProperties:=True, _ IgnorePrintAreas:=False, OpenAfterPublish:=True End Sub
ma questo non riesco a farlo funzionare..!
Perché? Cosa avviene? Scoppia il pc ? Va in crash? Si scioglie il disco? Si cancella il file?
Questa stupida mania di scrivere sui Forum: "Non funziona" (e niente altro) non la capisco proprio !!!
Come se scrivere così facesse capire TUTTO a chi non sa NULLA del tuo file.Il codice mi sembra corretto, dato che usi DIR() per verificare il percorso.
Ma se non spiegate in dettaglio cosa succede o cosa non succede fate solo perdere tempo.Per quanto riguarda la creazione del percorso (se non esiste) puoi usare questa ottima funzione:
https://www.forumexcel.it/forum/threads/creare-un-percorso-completo-se-non-esiste.25532/
..Ciao!..
Non funziona nel senso che facendo girare la macro col file salvato e presente nella directory, non mi compare la msgbox e la macro prosegue sovrascrivendo il file (lo vedo dal minuto del salvataggio).
Sembra che la funzione DIR non lavori bene, non so se sia la path con sintassi sbagliata [in b55 c'è C:PROVA\2019\12_dicembre\], ma nel caso credo non dovrebbe funzionare nemmeno il salvataggio..
Ho provato anche ad invertire la funzione IF, ma senza successo...
Grazie per l'aiuto, intanto provo ad implementare cosa mi hai già suggerito!
non so se sia la path con sintassi sbagliata [in b55 c'è C:PROVA\2019\12_dicembre\],
infatti è sbagliata, devi scrivere C:\PROVA
Sembra che la funzione DIR non lavori bene, non so se sia la path con sintassi sbagliata [in b55 c'è C:PROVA\2019\12_dicembre\]
Sulla funzione Dir() non esiste alcun dubbio: funziona come si deve!
Sei tu che ha sbagliato a scrivere il percorso, come ti ha fatto notare Patel.
SUGGERIMENTO
Queste cose accadono finché non si impara a fare il DEBUG del proprio codice.
Facendo il DEBUG il problema l'avresti scoperto, capito e corretto da solo, senza bisogno di aiuto.
E' così che si impara a programmare.Giusto per chiudere, oltre al percorso a cui mancava lo \ iniziale, mi sembra di aver risolto aggiungendo anche & ".pdf" alla funzione Dir(). Così il controllo funziona.
If Dir(myPath & myFile & ".pdf") <> "" Then Ans = MsgBox("Il file esiste già. Sostituire?", vbQuestion + vbYesNo, "File già presente!") If Ans = vbNo Then Exit Sub End If
buona giornata,
S.
-
AutoreArticoli