Code Library

M · UDF

fnRemoveAcentos

Remove acentos de letras latinas por uma tabela fixa de substituição.

Categoria: TextoTipo: UDFVersão: v2.0Fonte: Paulo André Jesus — OfficeTuningAtualizado em: 25/09/2026
Documentação completa na Function Library →

Sintaxe

fnRemoveAcentos(texto as nullable text) as nullable text

Argumentos

NomeTipoObrigatórioDescrição
textonullable textSimTexto com acentos.

Retorno

nullable text

Código completo

let
    fnRemoveAcentos = (texto as nullable text) as nullable text =>
        let
            vDe   = "ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖØÙÚÛÜÝàáâãäåçèéêëìíîïñòóôõöøùúûüýÿŠšŽžŸ",
            vPara = "AAAAAACEEEEIIIINOOOOOOUUUUYaaaaaaceeeeiiiinoooooouuuuyySsZzY",
            vPares = List.Zip({Text.ToList(vDe), Text.ToList(vPara)})
        in
            if texto = null then null
            else Text.Combine(List.ReplaceMatchingItems(Text.ToList(texto), vPares)),

    Documentacao = [
        Documentation.Name = "fnRemoveAcentos",
        Documentation.Description = "Remove acentos de letras latinas por uma tabela fixa de substituição.",
        Documentation.LongDescription = "Cada caractere de vDe é trocado pelo caractere na mesma posição de vPara. Caracteres fora da tabela não mudam. O resultado não depende da página de código do computador.",
        Documentation.Category = "Texto",
        Documentation.Author = "Paulo André Jesus",
        Documentation.Version = "2.0",
        Documentation.Examples = {
            [Description = "Texto em português", Code = "fnRemoveAcentos(""São João d’Ávila"")", Result = """Sao Joao d’Avila"""],
            [Description = "Caractere fora da tabela", Code = "fnRemoveAcentos(""Straße"")", Result = """Straße"""]
        }
    ]
in
    Value.ReplaceType(fnRemoveAcentos, Value.ReplaceMetadata(Value.Type(fnRemoveAcentos), Documentacao))

Exemplos

fnRemoveAcentos("São João d’Ávila")
// "Sao Joao d’Avila"

fnRemoveAcentos("Straße")
// "Straße"  (fora da tabela: não muda)

Dicas e observações

💡 O resultado não depende da página de código do computador nem do Service. ⚠️ O atalho Text.FromBinary(Text.ToBinary(texto, 1251), ...) não é documentado pela Microsoft e troca caracteres como – e € por ? ou �.