G1

August 8th, 2012

Remover Acentos no Excel 2010 via VBA (Visual Basic)

Microsoft Office

O Excel é a planilha do pacote do Microsoft Office que ainda contém o Word e o Access. Dentro do Excel você encontra muitas funções para trabalhar com números e textos, porém em alguns casos particulares não existe uma função que faça exatamente o que você quer. É ai que entra a facilidade de utilizar o recurso de programação do Visual Basic que existe dentro dos aplicativos do pacote Office. Se você não tem a função, você pode cria-la.

No Excel 2010 o recurso de programação do Visual Basic não aparece na interface padrão e você tem que ir na parte de opções para adicionar uma nova aba. Entre em arquivo -> Opções -> Customizar, e na janela da direita procure para marcar o checkbox de “Desenvolvimento” ou em inglês “Developer”.

Basta clicar em OK para ver a nova opção no menu do seu Excel.

Clique agora no botão “Visual Basic” que está bem na esquerda.

Ao abrir a janela do Visual Basic, clique no seu projeto e depois no botão para adicionar um novo “módulo”.

Clique no módulo e vai abrir um espaço na direita. É onde você pode escrever uma nova função para ser usada dentro do Office.

Encontrei uma função para Visual Basic na internet que pode ser usada para remover acentos no Excel. Basta copiar e colar o código a seguir para dentro do seu módulo.

Function ConvertAccent(ByVal inputString As String) As String
' http://www.vbforums.com/archive/index.php/t-483965.html

Const AccChars As String = _
"ŠŽšžŸÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðñòóôõöùúûüýÿ"
Const RegChars As String = _
"SZszYAAAAAACEEEEIIIIDNOOOOOUUUUYaaaaaaceeeeiiiidnooooouuuuyy"

Dim i As Long, j As Long
Dim tempString As String
Dim currentCharacter As String
Dim found As Boolean
Dim foundPosition As Long

tempString = inputString

' loop through the shorter string
Select Case True
Case Len(AccChars) <= Len(inputString)
' accent character list is shorter (or same)
' loop through accent character string
For i = 1 To Len(AccChars)

' get next accent character
currentCharacter = Mid$(AccChars, i, 1)

' replace with corresponding character in "regular" array
If InStr(tempString, currentCharacter) > 0 Then
tempString = Replace(tempString, currentCharacter, Mid$(RegChars, i, 1))
End If

Next i
Case Len(AccChars) > Len(inputString)
' input string is shorter
' loop through input string
For i = 1 To Len(inputString)

' grab current character from input string and
' determine if it is a special char
currentCharacter = Mid$(inputString, i, 1)
found = (InStr(AccChars, currentCharacter) > 0)

If found Then

' find position of special character in special array
foundPosition = InStr(AccChars, currentCharacter)

' replace with corresponding character in "regular" array
tempString = Replace(tempString, currentCharacter, _
Mid$(RegChars, foundPosition, 1))

End If
Next i
End Select

ConvertAccent = tempString
End Function

Salve a janela do Visual Basic e retorne para o Excel.

Agora basta usar a nova função ConvertAccent aplicando em qualquer célula para remover os acentos de uma string.

Para acompanhar novos artigos, siga no Twitter, ou curta nossa página no Facebook

Dúvidas? Pergunte, e eu Respondo

Leave a Reply





Os Mais Lidos

Artigos Recentes
  • Gusleig.com
  • Gusleig.com é um site de tecnologia dedicado a blogueiros e amantes de tecnologia.
    Publicamos artigos diários contendo truques, ferramentas, tutoriais e programas para baixar.
  • Assine o feed RSS, ou adicione aos favorito, assim você não perde nenhum artigo novo.
  • Feedback
  • Primeira Página

  • Algo a dizer ou a sugerir? Encontrou um bug ou problema em nosso site?
    Envie-nos uma mensagem que entraremos em contato o mais rápido possível.
  • Redes Sociais