Ci sono occasioni, come ad esempio la creazione di un file a cui occorre dare un nome via VBA, in cui è necessario intervenire su contenuti che possono pregiudicare tutta l’applicazione.
A me è capitato in un’applicazione in cui il nome era formato da nomi e cognomi. Nulla di preoccupante, dopotutto e dunque non ho previsto alcuna misura di controllo.
Viceversa, nel cognome di una persona, il programma s’è imbattuto in un “c/o”. Apparentemente innocuo, se tentate d’inserirlo nel nome di un file, il programma accetterà di buon grado d’inserirlo nella variabile ma, all’atto del salvataggio, la routine fallira.
Ciò avviene per il fatto che un semplice carattere “Slash” determinerebbe, dal punto di vista del sistema operativo, di raggiungere una sottocartella che ovviamente non avevate previsto. “/” è il separatore standard per indicare una sottocartella, infatti.
Vi allego il codice, estremamente semplice e pulito, che ho reperito da qualche parte sul web. E’ uno snippet importante! Nell’esempio il caratttere “/” viene sostituito con un underscore “_”
Public Function CambiaCarattere(Mystring As String)
Dim Outstring As String
'rimuove tutte le occorrenze di "/" e le sostituisce con "_"
Outstring = Replace(input1, "/", "_")
Mystring = Outstring
End Function