O código está certo. O Excel está bloqueando.
Por que a função de valor por extenso devolve #NOME?, some ao salvar ou nem aparece — e como deixá-la funcionando de vez.
Equipe numerosaletras · Atualizado 30 de agosto de 2026 · 10 min de leitura
O que você vai aprender
- ▸Os três bloqueios diferentes do Excel e como saber qual é o seu.
- ▸Por que a faixa vermelha não traz o botão «Habilitar Conteúdo».
- ▸O que cada erro quer dizer: #NOME?, #VALOR!, «Sub não definida».
- ▸Como deixar a função disponível em todas as suas planilhas.
- ▸O que fazer quando a empresa bloqueia macros e não há negociação.
01 · resposta rápida
Por que a macro não funciona?
Em nove de cada dez casos não é o código: é que o arquivo foi salvo em .xlsx, ou veio da internet e carrega a Marca da Web.
Quando uma função de extenso «não funciona», o reflexo é procurar outro código. Quase nunca precisa. O Excel tem três camadas distintas de bloqueio para macros, cada uma com o seu próprio sinal na tela, e confundir uma com a outra é o que faz perder a tarde. Este guia separa as três e vai direto ao conserto de cada uma. Se você ainda não tem o código, passe antes pelo gerador de código para Excel.
Vale dizer de saída: os sintomas se parecem muito, mas as causas não têm nada a ver uma com a outra. Uma se resolve com um clique dentro do Excel, outra fora do Excel — nas propriedades do arquivo, no explorador do Windows — e a terceira não se resolve de jeito nenhum se quem administra a máquina é outra pessoa. Saber em qual você está já é metade do trabalho.
02 · o motivo
Por que o Excel desconfia.
Uma macro não é uma fórmula: é um programa inteiro, com as mesmas permissões da pessoa que abre o arquivo. Pode ler pastas, apagar arquivos e abrir conexões. Durante anos, o caminho mais rentável para distribuir programa malicioso foi exatamente esse — uma planilha anexada num e-mail, com uma macro dentro — e daí vem toda a desconfiança que você encontra hoje pela frente.
A virada veio em 2022. Até então bastava a faixa amarela e o seu botão «Habilitar Conteúdo»: chato, mas um clique. O problema é que as pessoas clicavam por hábito, sem olhar. Então a Microsoft mudou o trato para os arquivos que vêm de fora da máquina: se o arquivo chegou da internet, do e-mail ou de uma pasta de rede, as macros dele ficam bloqueadas e não é oferecido botão nenhum.
Essa mudança é a razão de tantos tutoriais de alguns anos atrás não servirem mais. Eles dizem «clique em Habilitar Conteúdo» e na sua tela não há nada para clicar. O botão não está escondido nem falta permissão: ele simplesmente não existe mais para aquele arquivo, e a solução está fora do Excel.
03 · diagnóstico
Os três bloqueios, pelo sinal.
Antes de mexer em qualquer coisa, olhe o que aparece ao abrir o arquivo. O sinal identifica o bloqueio, e o bloqueio determina o conserto. Vão do mais leve ao mais teimoso.
01
Faixa amarela com o botão «Habilitar Conteúdo»
O arquivo tem macros e o Excel está pedindo autorização. É o caso benigno.
Clique em «Habilitar Conteúdo» uma vez. O Excel guarda a decisão para aquele arquivo.
02
Faixa vermelha, sem botão nenhum para clicar
O arquivo veio da internet, do e-mail ou de uma pasta de rede e carrega a Marca da Web. Desde 2022 o Excel bloqueia as macros desses arquivos de saída, e por isso não há botão.
Feche o Excel. Botão direito no arquivo → Propriedades → aba Geral → marque «Desbloquear» no rodapé → OK. Abra de novo.
03
Nenhuma faixa, nenhum aviso, a função simplesmente não existe
A Central de Confiabilidade está com todas as macros desativadas sem notificação, quase sempre por política da empresa.
Arquivo → Opções → Central de Confiabilidade → Configurações → Configurações de Macro. Se estiver em cinza, quem bloqueia é o administrador: vá pelo caminho sem macros.
Um detalhe do segundo caso que confunde muita gente: o desbloqueio precisa ser feito com o arquivo fechado, e é uma propriedade daquele arquivo, não da pasta. Se você baixar uma cópia nova amanhã, ela chega bloqueada de novo. Quando isso vira rotina diária, o certo é declarar a pasta como local confiável, e não desbloquear arquivo por arquivo.
04 · mensagens
O que cada erro está dizendo.
Se as macros já estão habilitadas e a função continua sem dar o resultado, a mensagem na célula diz bem mais do que parece.
| O que você vê | Causa | O que fazer |
|---|---|---|
| #NOME? | O Excel não reconhece a função | As macros estão desativadas, o nome está escrito errado, ou a função mora em outra pasta de trabalho que agora está fechada. |
| A função sumiu ao reabrir | O arquivo foi salvo como .xlsx | O formato .xlsx não aceita macros e o Excel as descarta ao salvar, com um aviso fácil de aceitar sem ler. Salve como .xlsm. |
| Erro de compilação: Sub ou Function não definida | Falta parte do código | O código foi colado pela metade, ou falta uma função auxiliar que a principal chama. Cole o bloco inteiro. |
| Símbolos estranhos no lugar dos acentos | Codificação do editor VBA | Salve o módulo, feche e reabra o editor. Costuma assentar na segunda vez. |
| Funciona numa planilha e em outra não | A função está naquele arquivo | Uma função num módulo comum só existe dentro do próprio arquivo. Para tê-la em todas, ela vai no PESSOAL.XLSB ou num suplemento. |
| #VALOR! | A célula não tem um número | Há texto, um espaço invisível ou número armazenado como texto. Confira com ÉNÚM(). |
O primeiro da lista é de longe o mais frequente, e também o mais enganoso: #NOME? não quer dizer que o código está escrito errado, e sim que o Excel não encontra função alguma com aquele nome. É o mesmo erro que aparece ao digitar «=SOMMA(A1:A9)». A pergunta certa não é «o que há de errado no código?» e sim «por que o Excel não está enxergando ele?».
05 · erros de método
Cinco costumes que quebram tudo.
Além das mensagens de erro, há cinco jeitos de trabalhar que garantem ter o mesmo problema de novo na semana que vem.
— Salvar o arquivo como .xlsx «porque é o normal»
+ Salvar como .xlsm (Pasta de Trabalho Habilitada para Macro)
É o erro número um. O .xlsx descarta o código ao salvar e o trabalho se perde em silêncio.
— Baixar um .xlsm de um fórum e abrir direto
+ Desbloquear o arquivo em Propriedades antes de abrir
Com a Marca da Web, o Excel nem oferece o botão de habilitar. Parece que o código está quebrado, e ele só está bloqueado.
— Colar o código dentro de «Plan1» ou «EstaPasta_de_trabalho»
+ Inserir → Módulo, e colar ali
Na planilha ou na pasta de trabalho, a função não é publicada como função de planilha e não aparece ao digitar «=».
— Baixar a segurança para «Habilitar todas as macros»
+ Manter o aviso e usar um local confiável
Essa opção abre a porta para qualquer macro de qualquer arquivo. Uma pasta declarada confiável resolve o mesmo sem desarmar a proteção.
— Reenviar o .xlsm por e-mail para dez colegas
+ Distribuir um suplemento .xlam, ou usar o caminho sem macros
Cada cópia chega bloqueada e cada pessoa precisa repetir o desbloqueio. E uma cópia corrigida não se sincroniza com as outras.
06 · de uma vez por todas
Que a função esteja sempre ali.
Uma função colada num módulo mora dentro daquele arquivo e só dele. É por isso que ela funciona na planilha de ontem e não na de hoje, e é por isso que a gente acaba colando o mesmo código pela décima vez. Se você converte valores por extenso com alguma frequência, compensa instalar de uma vez e esquecer.
O caminho para uso próprio é a pasta de trabalho pessoal de macros, o PESSOAL.XLSB: um arquivo oculto que o Excel abre a cada sessão. Ela se cria gravando uma macro qualquer com a opção «Armazenar macro em: Pasta de trabalho pessoal de macros», e a partir daí o código que você puser nos módulos fica disponível em todas as suas planilhas, novas e antigas, sem colar de novo.
Para uma equipe, o certo é um suplemento .xlam: o código é salvo como suplemento, cada pessoa ativa uma vez em Opções → Suplementos, e a função fica instalada no Excel dela, não num arquivo solto circulando por e-mail. Tem a vantagem de que uma correção se distribui atualizando um arquivo só, em vez de caçar cópias.
Nos dois casos a regra do formato continua mandando: as planilhas onde você usar a função são salvas em .xlsm. O suplemento resolve onde o código mora, não em que formato você salva o seu trabalho.
07 · quando não há macro
Os quatro ambientes sem saída.
Há situações em que nenhuma das soluções acima se aplica, e reconhecê-las a tempo poupa horas de tentativa. Nestas quatro, a macro não vai funcionar por mais que você insista.
▸ excel no navegador
A versão web não executa VBA de jeito nenhum. Abre o arquivo e mostra os dados, mas o código não roda.
▸ política da empresa
Se a opção da Central de Confiabilidade aparece em cinza, quem decide é um administrador. Não há ajuste local que sobrescreva.
▸ libreoffice calc
Tem o seu próprio Basic e compatibilidade parcial com VBA, mas uma função de extenso com acentos e concordâncias raramente sobrevive ao transplante sem retoque.
▸ arquivos compartilhados na nuvem
Uma planilha que várias pessoas editam ao mesmo tempo no navegador volta ao primeiro caso: o código está lá, mas ninguém executa.
Nos quatro casos a saída é a mesma e não passa por VBA: uma função LAMBDA, que faz a conversão com fórmulas nativas, mora dentro do próprio arquivo e viaja com ele sem disparar bloqueio algum. O gerador de código produz essa versão além da macro.
E para um valor avulso — o de um recibo, o de um cheque — montar qualquer uma das duas é desproporcional: o conversor de número por extenso dá o resultado na hora, com as mesmas regras de concordância.
08 · perguntas
Perguntas frequentes.
-
Q01
O Excel diz que bloqueou as macros e não me deixa habilitar. E agora?
Esse é o bloqueio da Marca da Web, que o arquivo recebe ao vir da internet, do e-mail ou de uma pasta de rede. Desde 2022 a Microsoft bloqueia as macros desses arquivos por padrão e, diferente do aviso amarelo de sempre, esse não oferece botão para liberar — daí a sensação de beco sem saída. A saída existe, mas é fora do Excel: feche o arquivo, clique com o botão direito, Propriedades, e marque «Desbloquear» no rodapé da aba Geral.
-
Q02
O que significa o erro #NOME? na célula?
Que o Excel leu a fórmula mas não sabe que função é essa. São três motivos possíveis, nessa ordem: as macros estão desativadas, o nome está digitado errado, ou a função está em outra pasta de trabalho que não está aberta agora. Descarte os três e o erro sai; se persistir, confira se o código está num módulo e não na planilha.
-
Q03
Por que a função some quando eu fecho e abro o arquivo de novo?
Quase certamente o arquivo foi salvo como .xlsx. Esse formato não guarda código, então o Excel o descarta ao salvar; ele avisa, mas numa caixa de diálogo que quase todo mundo aceita sem ler. A solução é Salvar como → Pasta de Trabalho Habilitada para Macro do Excel (.xlsm). Se já perdeu, é preciso colar o código de novo: não dá para recuperar.
-
Q04
Como deixo a função disponível em todas as minhas planilhas?
Colocando-a na pasta de trabalho pessoal de macros, o PESSOAL.XLSB, que o Excel abre oculto a cada sessão. Ela se cria gravando uma macro qualquer com a opção «Armazenar macro em: Pasta de trabalho pessoal de macros», e a partir daí o código que você puser nos módulos vale em todas as suas planilhas. A alternativa, se precisar distribuir para mais gente, é um suplemento .xlam.
-
Q05
É perigoso ativar as macros?
Depende inteiramente de onde o código veio. Uma macro é um programa com as mesmas permissões que você, então pode ler e apagar arquivos. Por isso o conselho não é «nunca ative», e sim «leia o código antes». Um código de conversão por extenso são algumas dezenas de linhas de texto e números, sem instruções de rede nem de sistema de arquivos; se você vir algo que abre conexões ou mexe em pastas, não execute.
-
Q06
O que é um local confiável e por que ele é melhor que baixar a segurança?
É uma pasta que você declara segura: os arquivos que estiverem dentro abrem as macros sem aviso, e todo o resto continua protegido. Configura-se em Arquivo → Opções → Central de Confiabilidade → Configurações → Locais Confiáveis. É melhor que a opção de habilitar todas as macros, que remove a proteção para qualquer arquivo vindo de qualquer lugar.
-
Q07
Na minha empresa as macros são bloqueadas por política. Sobra alguma opção?
Sobra, e não passa por convencer o TI. As funções LAMBDA fazem a conversão sem uma linha de VBA, moram dentro do próprio arquivo e viajam com ele sem disparar bloqueio nenhum. O gerador deste site produz essa versão além da macro. Para um valor avulso, o conversor da página inicial é mais rápido que as duas.
-
Q08
Posso mandar a planilha com a macro para um colega?
Pode, mas ela vai chegar bloqueada: ao viajar por e-mail ou pela rede, o arquivo recebe a Marca da Web e seu colega verá a faixa vermelha. Ele vai precisar desbloquear em Propriedades como você fez. Se forem várias pessoas, compensa distribuir um suplemento .xlam instalado uma vez, ou direto a versão LAMBDA, que não tem esse problema.
-
Q09
Funciona igual no Excel para Mac?
O VBA existe no Excel para Mac e uma função de extenso roda sem problema, mas o ambiente muda: o editor abre por Ferramentas → Macro → Editor do Visual Basic, não há um PESSOAL.XLSB com o mesmo nome e as permissões de arquivo do sistema pedem confirmação à parte. O que não muda é a regra do formato: tem que salvar em .xlsm.
-
Q10
E no Excel para a web?
Ali não há solução possível com macro: a versão web não executa VBA de jeito nenhum. Você abre um .xlsm e vê os dados, mas o código não roda e a função devolve erro. Se você trabalha no navegador, as opções reais são a fórmula LAMBDA ou converter o valor no conversor e colar o resultado.
-
Q11
Por que a macro fica lenta numa planilha com milhares de linhas?
Porque uma função personalizada em VBA é avaliada linha a linha e é muitas ordens de grandeza mais lenta que uma função nativa. Com algumas células ninguém percebe; com vinte mil, percebe. A saída habitual é converter uma vez e depois colar o resultado como valores, para a planilha parar de recalcular um texto que não vai mais mudar.
-
Q12
Preciso disso para emitir nota fiscal?
Não para a emissão em si — o sistema emissor da NF-e gera o documento sozinho. A conversão por extenso entra nos documentos que acompanham a operação e que muita gente ainda monta em planilha: recibo, contrato, nota promissória, relatório de fechamento. É nesses que o valor por extenso é cobrado, e é neles que a função no Excel poupa a digitação manual.
Primeiro o bloqueio, depois o código.
Antes de trocar de macro, confira o formato do arquivo e a Marca da Web: é onde está a maioria dos casos. Se o ambiente não aceita macro, a versão LAMBDA faz o mesmo sem pedir licença a ninguém.
Gerar o código para Excel →