Speravo che con l’introduzione di Unicode (il draft proposal è del 1980!) queste cose non fossero più necessarie, e invece.
Anna si occupa delle registrazioni a conferenze con migliaia di partecipanti. Uno dei suoi problemi è l’elenco degli iscritti è composto in realtà da più elenchi compilati da più persone in più paesi con diversi layout di tastiera. Un altro problema è che gli elenchi contengono doppioni, ma scritti a volte in modo diverso.
In queste condizioni, un semplice “Rimuovi duplicati” non serve a nulla, occorre lo strumento “santa manina”. Ma una macro che rimuova tutti i caratteri accentati e li sostituisca con i corrispettivi non accentati aiuta per lo meno a sgrossare il lavoro. La metto qui, casomai dovesse servire ad altri:
Sub CaratteriSpeciali() 'Sostituisce tutti i caratteri accentati con il corrispondente non accentato Const AccChars = "šžŸÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðñòóôõöùúûüýÿ" Const RegChars = "szYAAAAAACEEEEIIIIDNOOOOOUUUUYaaaaaaceeeeiiiidnooooouuuuyy" For i = 1 To Len(AccChars) A = Mid(AccChars, i, 1) B = Mid(RegChars, i, 1) Selection.Replace What:=A, Replacement:=B, MatchCase:=True, SearchFormat:=False, _ ReplaceFormat:=False Next Selection.Replace What:="ß", Replacement:="ss", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False End Sub
La sostituzione di “ß” con “ss” l’ho fatta separatamente, dato che non si trattava di una sostituzione uno-a-uno.
Come sempre, se sai come migliorare il codice, sono tutto orecchi.