Con un ciclo for passi carattere per carattere (funzione Mid). Se il codice ascii del carattere (funzione Asc) è compreso tra 48 e 57 (cifre da 0 a 9) oppure compreso tra 65 e 132 (caratteri da A a Z) lasci il carattere invariato, altrimenti lo sostituisci con l'underscore.
In alternativa, usi il metodo Replace dell'oggetto RegExp:
codice:
Dim rx, titolo
titolo = "mast.dvd 3.5"""
Set rx = New RegExp
rx.IgnoreCase = True
rx.Global = True
rx.Pattern = "[^\w]" 'cerca tutti i caratteri diversi da a-z, A-Z, 0-9, _
titolo = rx.Replace(titolo, "_")