Laennder AlvesLaennder Alves
  • Home
  • Datab
  • Blog
  • Fóruns
    • Excel
    • Power BI
  • Cursos Online
  • Home
  • Datab
  • Blog
  • Fóruns
    • Excel
    • Power BI
  • Cursos Online

VBA e Macros

  • Home
  • Blog
  • VBA e Macros
  • Função VBA para Remoção de Acentos

Função VBA para Remoção de Acentos

  • Postado por laennder
  • Categorias VBA e Macros
  • Data 19 de fevereiro de 2016
  • Comentários 4 comentários

Esta semana estive trabalhando em um análise de dados, onde eu precisava comparar duas lista de valores. Acabei me deparando com a situação que uma lista as palavras estavam escritas com acentuação e na outra não. Infelizmente, no Excel, não temos uma função nativa que remove acentos.

Para isso tive que recorrer a uma função personalizada, mais conhecidas como UDF (User-Defined Function).

As UDF’s são funções criadas no VBA e que também podem ser utilizadas numa planilha de dados. O código é bem simples. Veja abaixo:


Option Explicit

Function RemoveAcentos(sString As String) As String
    
    Dim sAcentos As String
    Dim sSemAcentos As String
    Dim sTemp As String
    Dim i As Long
 
    'Liste nesta variável todos os acentos possíveis
    sAcentos = "àáâãäèéêëìíîïòóôõöùúûüÀÁÂÃÄÈÉÊËÌÍÎÒÓÔÕÖÙÚÛÜçÇñÑ"
     
    'Letras sem acentuação correspondentes para substituição
    sSemAcentos = "aaaaaeeeeiiiiooooouuuuAAAAAEEEEIIIOOOOOUUUUcCnN"
     
    'Armazena em sTemp a string recebida
    sTemp = sString
     
    'Loop que percorrerá todas as letras da variável 'sAcentos',
    'subtituindo pelo caractere correspondente em 'sSemAcentos'
    For i = 1 To Len(sAcentos)
        sTemp = Replace(sTemp, Mid(sAcentos, i, 1), Mid(sSemAcentos, i, 1))
    Next i
     
    'Retorna a nova string
    RemoveAcentos = sTemp
     
End Function

O código já está comentado. Mas basicamente consiste em duas strings do mesmo tamanho, contendo os acentos em uma, e as correspondências sem acentos na outra string.

Depois é feito um loop For percorrendo cada uma das letras acentuadas, e fazendo uma substituição pelo caractere correspondente usando a função Replace.

For i = 1 To Len(sAcentos)
    sTemp = Replace(sTemp, Mid(sAcentos, i, 1), Mid(sSemAcentos, i, 1))
Next i

Clique aqui para fazer download
  • Compartilhe:
laennder
Microsoft MVP (Most Valuable Professional), criador de conteúdo com +50.000 seguidores. Instrutor e consultor em tecnologias Microsoft com especialidade Excel e Power BI (Linguagem M e DAX). Co-fundador da Datab, empresa especializada em soluções de Inteligência e Estratégia.

Post anterior

Criando um People Graph com Gráfico de Dispersão
19 de fevereiro de 2016

Próximo post

Listas Suspensas em Cascata com Validação de Dados
22 de fevereiro de 2016

Você também pode gostar

Curso de VBA para Iniciantes – Conceitos Básicos
7 abril, 2015

Este artigo é uma introdução sobre VBA, no final do artigo você confere um link para uma playlist com vídeos do Curso de VBA para Iniciantes (os vídeos serão adicionados aos poucos na playlist). O que é e para que …

Protegendo/Desprotegendo todas as planilhas de uma vez
3 janeiro, 2015

Muito comumente você deve trabalhar em uma pasta de trabalho com várias planilhas e ao terminar precisa sair protegendo planilha por planilha. Dependendo da quantidade de planilhas a tarefa pode se tornar muito chata. E se você precisar fazer alterações? Irá …

AmbienteXL – Mais Funcionalidades para o seu Excel
17 junho, 2014

Salve amigos! Depois de uma pequena pausa, estou de volta ao blog, e quero apresentar a vocês o ótimo trabalho desenvolvido pelo meu amigo Felipe Gualberto. Ele desenvolveu um suplemento para o Excel chamado ExpressXL. Provavelmente muitos de vocês já sabem, mas …

    4 Comentários

  1. Krys
    23 de fevereiro de 2016
    Responder

    oi como uso esse código ? esta dando erro. Tenho uma planilha que é resultado de duas outras. como faço pra esse código considerar e retirar os acentos na planilha de resultado a qual já tenho uma macro muito extensa? Tentei abrir um modulo mas não funcionou e nem entre o código da macro. Me ajuda!

    • laennder
      26 de fevereiro de 2016
      Responder

      Krys, você tem que adicionar o código em um módulo no Editor de Visual Basic. Pressione as teclas Alt + F11, e vá em inserir módulo. Cole o código. Certifique que esteja inserindo o módulo na pasta de trabalho que deseja utilizar a função.

      É importante também salvar o arquivo na extensão XLSM

  2. Ailton Oliveira
    22 de março de 2016
    Responder

    amigo, eu tenho o seguinte codigo:

    Dim MyOlapp As Object, MeuItem As Object

    Set MyOlapp = CreateObject(“Outlook.Application”)

    Set MeuItem = MyOlapp.CreateItem(olMailItem)

    With MeuItem

    .To = “xxx@commercial.com.br;”

    .cc = “XXX@Commercial.com.br;”

    .Subject = “Orçado x realizado – Atualizado até: ” & [ae1].Text

    .Body = “Prezados (as),” & vbCrLf & _

    ” ” & vbCrLf & _

    ” ” & vbCrLf & _

    “Segue o Link contendo informações referente ao orçado x Realizado.” & vbCrLf & _

    “file://Sdufls04sdu04PúblicoBudget_2016GERAL.xlsx” & vbCrLf & _

    “atualizado até: ” & [ae1].Value & “.” & vbCrLf & _

    ” ” & vbCrLf & _

    “Desde já agradeço e nos colocamos à disposição para eventuais duvidas.” & vbCrLf & _

    ” ” & vbCrLf & _

    “Controladoria” & vbCrLf & _

    “Tel.:: 55 11 3513-XXXXX” & vbCrLf & _

    ” ” & vbCrLf & _

    ” ” & vbCrLf & _

    ” ” & vbCrLf & _

    “XXXX” & vbCrLf

    .Display

    End With

    End Sub

    o meu maior problema neste código é que o dominio (pasta Publico) que estou tentando incluir como hiperlink no outlook tem acento, existe alguma forma de eu corrigir isto via vba? pois é um dominio utilizado por muitas areas e eu não consigo renomear.

    Abs.,

  3. Eduardo França
    9 de dezembro de 2016
    Responder

    Laennder, obrigado por compartilhar. Já tinha visto esta macro em outro site, tenho-a como suplemento e utilizo bastante em meus relatórios.
    Sou grande fã do Excel, atualmente aprendendo também Java (faculdade) e Python (autodidata) e me aventurando cada vez mais a fundo no Visual Basic for Applications.
    Gostaria que você (e toda a equipe do Guru do Excel) soubesse que já me ajudaram inúmeras vezes e agradeço por compartilhar o conhecimento adquirido.

    Tenho uma pergunta a você, referente à sua certificação Microsoft Excel Specialist Expert, na verdade, somente da Microsoft Excel Specialist, que você deve ter feito também.
    Como é a prova? Gostaria de estar preparado, pois estou pensando em obter a certificação, mas para isso tenho que viajar para outro estado (Em uma pesquisa, caindo no site da Microsoft, obtive o centros de ensino mais próximos somente em SP e RJ, mas moro em MG).

    Gostaria de agradecer mais uma vez pela “consultorias” prestadas, que elevaram exponencialmente o nível de minhas planilhas.

Deixe uma resposta Cancelar resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

BUSCA

Categorias

  • Análise de Dados
  • Anúncios e Notas
  • Artigos
  • Fórmulas e Funções
  • Gráficos e Figuras
  • Iniciando o Excel
  • Planilhas e Downloads
  • Recursos Avançados
  • Tratamento de Dados
  • VBA e Macros

Últimos Posts

Como a técnica 10-10-10 tem me ajudado na tomada de decisões.
04jun2018
Poder da Função Recursiva: Substituição de Múltiplas Palavras no Power Query
24maio2018
LEIA: Reestruturação do Site
14maio2018
laennder alves
laennder {arroba} datab.com.br
(11) 99255 8209