Substituindo todos os acentos em um texto.

Outro dia recebi uma consulta sobre como eliminar os caracteres acentuados de um texto. Na verdade o texto fora importado de uma base de dados padrão ISAM ( dbase , Fox Pro , Paradox ) e deveria ser usada em uma outra fonte de dados de forma que os caracteres acentuados iriam causar muitos problemas e deveriam ser removidos. Assim é , ê , ë deve tornar-se e ; á, à , ä, ã deve virar a , e assim por diante...

Para resolver o problema é só criar uma função que substitua esses caracteres pelos correspondentes sem acento. Muito esperto !! Para faze isto é só dar uma olhada na tabela ASCII de caracteres onde temos o código que representa cada caractere:

 128 160 [space] 192 À 224 à
129 161 ¡ 193 Á 225 á
130 162 ¢ 194 Â 226 â
131 163 £ 195 Ã 227 ã
132 164 ¤ 196 Ä 228 ä
133 165 ¥ 197 Å 229 å
134 166 ¦ 198 Æ 230 æ
135 167 § 199 Ç 231 ç
136 168 ¨ 200 È 232 è
137 169 © 201 É 233 é
138 170 ª 202 Ê 234 ê
139 171 « 203 Ë 235 ë
140 172 ¬ 204 Ì 236 ì
141 173 ­ 205 Í 237 í
142 174 ® 206 Î 238 î
143 175 ¯ 207 Ï 239 ï
144 176 ° 208 Ð 240 ð
145 177 ± 209 Ñ 241 ñ
146 178 ² 210 Ò 242 ò
147 179 ³ 211 Ó 243 ó
148 180 ´ 212 Ô 244 ô
149 181 µ 213 Õ 245 õ
150 182 214 Ö 246 ö
151 183 · 215 × 247 ÷
152 184 ¸ 216 Ø 248 ø
153 185 ¹ 217 Ù 249 ù
154 186 º 218 Ú 250 ú
155 187 » 219 Û 251 û
156 188 ¼ 220 Ü 252 ü
157 189 ½ 221 Ý 253 ý
158 190 ¾ 222 Þ 254 þ
159 191 ¿ 223 ß 255 ÿ

Observe que os códigos para À , Á , Â , Ä , Å correspondem aos códigos 192, 192, 193 ... , 197. Deu para pegar a idéia ??? A função deve receber o texto e verificar caracterer por caracter contra os códigos da tabela a cima , substituindo-os pelos respectivos caracteres sem acento... Vamos a dita cuja.

Private Function Limpa_Texto(texto As String)
Dim texto_limpo As String
Dim Codigo_Tabela_Asc As Integer
Dim posicao As Long

For posicao = 1 To Len(texto)
Codigo_Tabela_Asc = Asc(Mid(texto, posicao, 1))
  Select Case Codigo_Tabela_Asc
     Case 192 To 197
        Codigo_Tabela_Asc = Asc("A")
     Case 224 To 229
        Codigo_Tabela_Asc = Asc("a")
     Case 200 To 203
        Codigo_Tabela_Asc = Asc("E")
     Case 232 To 235
        Codigo_Tabela_Asc = Asc("e")
     Case 204 To 207
        Codigo_Tabela_Asc = Asc("I")
     Case 236 To 239
        Codigo_Tabela_Asc = Asc("i")
     Case 199
        Codigo_Tabela_Asc = Asc("C")
     Case 231
        Codigo_Tabela_Asc = Asc("c")
  End Select
  texto_limpo = texto_limpo & Chr(Codigo_Tabela_Asc)
Next

Limpa_Texto = texto_limpo

End Function

A função acima não esta completa , eu apenas mostrei como substituir as ocorrências de acentos nos caracteres: A,a,E,e,I,i,Ç e ç. Cabe a você agora expandir a função de acordo com sua necessidade. Quer saber como usar ???

Bem basta chamar a função passando o texto a ser limpo , assim : texto_limpo = limpa_Texto(texto)

Até a próxima...