Como corrigir caracteres acentuados estranhos no Excel com uma simples macro
Na importação de dados de uma fonte externa para o Excel por vezes verificamos que os caracteres acentuados são apresentados de forma estranha. Por exemplo, em vez de “Consultoria e Mediação Imobiliária”, os dados são transferidos como “Consultoria e Mediação Imobiliária”. Por ser extremamente aborrecido corrigir manualmente este tipo de dados, criei uma pequena macro que resolve o assunto facilmente.
Exemplo de uma listagem com caracteres acentuados estranhos importada para o Excel
Vejamos um exemplo de uma importação do nosso gestor de conteúdos com as inscrições nos nossos cursos online. Para simplificar, vamos só analisar os títulos dos cursos:
Curso Rácios de Gestão
Curso Excel - Nìvel Avançado
Curso Rácios de Gestão
Curso Modelos de Negócio
Curso Falar em Público com Impacto
Curso Gestão do Tempo
Curso Planos de Negócios - Parte A
Curso Legislação Laboral
Curso Gestão do Tempo
Curso Planos de Negócios - Parte B
Curso Excel - Nìvel Avançado
Curso Excel - Nìvel Intermédio
Como é óbvio, esta informação não pode ser apresentada desta forma num relatório. Além disso, utilizar a função FIND + REPLACE
(PROCURAR + SUBSTITUIR
) também não é funcional pois obriga-nos a especificar todas as correções individualmente, e se voltarmos a realizar uma nova importação, teremos de repetir todo o processo.
Então, podemos utilizar a seguinte macro que cria a função personalizada CORRIGIRCARS
. E tudo o que temos de fazer é introduzir como seu único argumento o texto que pretendemos corrigir.
Teremos assim, por exemplo, na coluna B da seguinte tabela um exemplo do texto já corrigido:
A macro que permite corrigir os caracteres acentuados estranhos
Para utilizar esta função, introduza o código abaixo num módulo a partir do seu editor VBA (para aceder ao editor, clique em Alt+F11
e para inserir um novo módulo clique em Insert -> Module
):
Function CorrigirCars(texto As String)
Dim A As String
Dim i, n As Integer
For i = 1 To Len(texto)
A = Mid(texto, i, 2)
Select Case A
Case "A£"
texto = Replace(texto, A, "ã")
Case "ã"
texto = Replace(texto, A, "ã")
Case "é"
texto = Replace(texto, A, "é")
Case "ç"
texto = Replace(texto, A, "ç")
Case "õ"
texto = Replace(texto, A, "õ")
Case "ó"
texto = Replace(texto, A, "ó")
Case "ê"
texto = Replace(texto, A, "ê")
Case "Ã"
texto = Replace(texto, A, "í")
Case "â"
texto = Replace(texto, A, "â")
Case "á"
texto = Replace(texto, A, "á")
Case "ú"
texto = Replace(texto, A, "ú")
Case "º"
texto = Replace(texto, A, "º")
End Select
Next i
CorrigirCars = texto
End Function
E aí está, problema ultrapassado! Não o vou maçar com os aspetos técnicos, trata-se de uma simples instrução SELECT…CASE
. Se preferir, pode fazer o download do ficheiro em anexo que contém o exemplo apresentado neste post.