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
' https://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.