Salva con nome file esistente
Hai un problema con Excel? 
Salva con nome file esistente
di marcofonini data: 23/01/2013 12:40:44
Salve,
ho questa macro che salva il file con nome, ma se il nome del file già esiste e si da il comando no (non sovrascrivere il file) si apre la finestra di debug. E' possibile evitarlo?
Sub salva2()
Dim percorso, nome, nomecompleto As String
percorso = ActiveWorkbook.Path & ""
nome = "File " & _
ActiveSheet.Range("A1").Value & _
" del " & _
Replace(ActiveSheet.Range("B1").Value, "/", "-")
nomecompleto = percorso & nome
ActiveWorkbook.SaveAs Filename:=nomecompleto
End Sub |
Salva con nome file esistente
di marcofonini data: 23/01/2013 12:40:52
Salve,
ho questa macro che salva il file con nome, ma se il nome del file già esiste e si da il comando no (non sovrascrivere il file) si apre la finestra di debug. E' possibile evitarlo?
Sub salva2()
Dim percorso, nome, nomecompleto As String
percorso = ActiveWorkbook.Path & ""
nome = "File " & _
ActiveSheet.Range("A1").Value & _
" del " & _
Replace(ActiveSheet.Range("B1").Value, "/", "-")
nomecompleto = percorso & nome
ActiveWorkbook.SaveAs Filename:=nomecompleto
End Sub |
di HarryBosch data: 23/01/2013 13:13:55
Si, esce l'errore perché il salvataggio non viene eseguito e quel "SaveAs" non si compie correttamente.
Puoi inserire la correzione dell'errore inserendo questa istruzione subito prima del SaveAS, vedi sotto.
Una nota per quanto riguarda le variabili: in vba, diversamente dal vb, per ogni variabile devi sempre essere indicato il tipo, altrimenti assumono il tipo Variant.
Se vuoi sovrascrivere sempre il file, quindi nel caso già esistesse, puoi evitare la conferma che ti esce, inserendo queste due istruzioni, a inizio e a fine codice:
Application.DisplayAlerts = False
'...istruzioni
Application.DisplayAlerts = True
Sub salva2()
Dim percorso As String, nome As String, nomecompleto As String
percorso = ActiveWorkbook.Path & ""
nome = "File " & ActiveSheet.Range("A1").Value & " del " & _
Replace(ActiveSheet.Range("B1").Value, "/", "-")
nomecompleto = percorso & nome
On Error Resume Next
ActiveWorkbook.SaveAs Filename:=nomecompleto
End Sub
|
di Vecchio Frac data: 23/01/2013 13:18:58
cit. " Una nota per quanto riguarda le variabili: in vba, diversamente dal vb, per ogni variabile devi sempre essere indicato il tipo, altrimenti assumono il tipo Variant. "
---> Il punto è che l'errore comune che si fa quando si affronta VBA è pensare che
Dim percorso, nome, nomecompleto As String
specifichi il tipo "String" per ognuna delle variabili indicate, ma ciò non è vero, solo l'ultima è espressamente tipizzata mentre le prime due (non essendo specificate) diventano Variant, con grande spreco di memoria.
Ecco perchè come dice HarryBosch bisogna essere espliciti per ogni variabile in gioco:
Dim percorso As String, nome As String, nomecompleto As String
di marcofonini data: 23/01/2013 16:15:40
Grazie mille HarryBosch, funziona perfettamente. Ti sono grato anche per la spiegazione sulle variabili, mi sarà utile in futuro.
Grazie anche a te vecchio frack, sei un punto di riferimento.
A presto
di marcofonini data: 23/01/2013 16:16:17
Vuoi Approfondire?