XLSM

O que é um arquivo XLSM?

Uma pasta de trabalho do Excel com macros embutidas.

O que é XLSM

XLSM é um contêiner: um invólucro para fluxos que outra coisa codificou. Ele é usado para a edição.

A extensão é .xlsm e o nome por extenso é Excel Macro-Enabled Workbook. Os dois importam menos do que aquilo que o arquivo consegue carregar, e é disso que trata o resto desta página.

De onde vem XLSM

A Microsoft publicou o formato em 2007. A especificação é ECMA-376.

A idade interessa por um motivo prático: quanto mais antigo o formato, mais programas tiveram tempo de aprendê-lo.

A especificação é pública

Ela está publicada por inteiro, então dá para implementá-la a partir do documento em vez de por observação — é por isso que o formato aparece em tantos programas e por isso que arquivos escritos há vinte anos ainda abrem. Especificação publicada não é o mesmo que livre de royalties: quando o formato embrulha um codec, o licenciamento das patentes é uma questão à parte, que a norma não resolve.

Ele pode ter várias páginas num só arquivo

Um arquivo XLSM não está limitado a uma página, e isso conta na hora de converter para algo que está: cada conversão produz um arquivo com uma página só — a primeira, a menos que o conversor deixe você escolher qual.

Ele pode conter macros

XLSM tem permissão para levar código executável, e em geral é justamente por isso que alguém esbarra nessa extensão: um servidor de e-mail ou um portal de documentos recusou. Converter para um formato sem macros é o caminho habitual — e sim, as macros vão embora no processo.

Que tipo de documento ele é

XLSM contém uma planilha: células, fórmulas e as abas em volta.

É isso que decide como ele converte: uma planilha vira uma área de impressão, e onde as colunas quebram é uma decisão que alguém tem de tomar.

O que abre XLSM

Microsoft Excel lê esse formato, e a maioria dos programas do mesmo tipo também.

Quando um arquivo não abre, o formato raramente é o problema — mais comum é o programa ser mais antigo que ele. Converter para algo mais antigo é o caminho confiável, e é para isso que serve o resto deste site.

Abrir no navegador

Nenhum navegador lê o formato.

Esse é de longe o motivo mais comum para convertê-lo: não que o formato seja ruim, mas que o lugar onde você quer mostrar o arquivo não consegue lê-lo.

É um formato de trabalho

XLSM foi feito para ser aberto e alterado. Mantenha o arquivo nesse formato enquanto o trabalho estiver em andamento e exporte a partir dele sempre que precisar de uma cópia pronta.

A extensão é um rótulo de aviso, de propósito

XLSM e XLSX são o mesmo formato. Os dois são pacotes ZIP de XML, os dois carregam as mesmas planilhas, fórmulas e formatação, e a única diferença é que um XLSM pode conter um projeto VBA, e um XLSX não pode.

Essa divisão era o ponto. Antes de 2007, uma pasta de trabalho podia carregar macros sem nada na extensão dizer isso, e planilhas foram uma das rotas de entrega de malware mais eficazes já usadas. Separar as extensões significa que quem recebe consegue ver, antes de abrir qualquer coisa, se um arquivo alega conter um projeto VBA. Isso é mais estreito que "seguro" — fórmulas DDE e objetos OLE embutidos também vivem num XLSX comum — mas é a garantia sobre a qual toda regra de recebimento é construída.

O que uma macro realmente consegue fazer

VBA é uma linguagem de programação completa com acesso ao sistema de arquivos, à rede e a outros aplicativos. Uma macro consegue ler e gravar arquivos em qualquer lugar que o usuário consiga, mandar dado para fora, lançar programas, e modificar outros documentos. Não é uma linguagem de fórmula confinada à planilha.

Esse é o motivo honesto para o cuidado. A esmagadora maioria das macros é a automação de relatório de algum colega, fazendo exatamente o que diz. A minoria que não é tem as mesmas capacidades, e o arquivo não dá nenhum jeito de distinguir elas além de ler o código.

Por que as macros não rodam quando você abre

O Excel desabilita macros por padrão e mostra um aviso. Se o arquivo veio da internet ou de um anexo de e-mail, o Windows adicionalmente marca ele com uma sinalização de zona, e desde 2022 o Excel bloqueia macros nesses arquivos completamente — um aviso vermelho em vez de um botão de habilitar.

O conserto pretendido para um arquivo em que você confia é desbloquear ele nas propriedades do arquivo, ou colocar ele numa pasta configurada como local confiável. O que vale resistir é o hábito de clicar sem pensar: o bloqueio existe porque esse clique foi o último passo num número muito grande de incidentes reais.

Onde o código mora, e por que é opaco

O projeto VBA é guardado dentro do ZIP como um fluxo binário — a única parte de um pacote Office Open XML que não é XML legível. Renomear o arquivo para .zip e olhar dentro mostra as planilhas em texto puro e a macro como um blob ilegível.

Então inspecionar uma macro significa abrir o editor VBA no Excel ou no LibreOffice, o que a maioria das pessoas não vai fazer, e é o único jeito confiável de saber o que uma pasta de trabalho faz. Também significa que controle de versão não consegue mostrar um diff significativo do código, o que explica automação séria de planilha eventualmente abandonar o VBA por algo que vive em arquivos de texto.

Converter para XLSX remove a automação

Salvar um XLSM como XLSX remove o projeto VBA e mantém tudo mais — planilhas, fórmulas, formatação, gráficos, intervalos nomeados. O Excel avisa antes de fazer isso, e o aviso é a transação inteira.

Isso é exatamente o que você quer para uma pasta de trabalho recebida de fora que você só precisa ler os números, e exatamente o que você não quer para um arquivo cuja automação é o propósito dele. A distinção é simples: se a pasta de trabalho faz algo quando você aperta um botão, converter quebra ela; se ela só guarda dado, converter torna ela mais segura.

E converter para PDF ou CSV

PDF para qualquer coisa sendo enviada, arquivada ou impressa. O resultado é fixo, não carrega nenhum conteúdo executável, e remove tanto a questão de layout quanto a de macro num passo só. Para circular um relatório gerado por uma pasta de trabalho movida por macro, essa é quase sempre a saída certa.

CSV quando o destino é um banco de dados, um script ou um pipeline de análise. Carrega uma planilha de valores e nada mais — sem fórmulas, sem formatação, sem código — o que é exatamente por que rotinas de importação e sistemas preocupados com segurança pedem por ele especificamente pelo nome.

Quando uma pasta de trabalho cresceu demais para macros

Um projeto VBA que virou o jeito que um departamento inteiro trabalha é um passivo que vale nomear: o código é opaco para controle de versão, roda só onde o Excel roda, quebra quando uma planilha é renomeada, e normalmente é mantido por uma pessoa só que já mudou de emprego.

A direção da própria Microsoft é Office Scripts e Power Automate para esse trabalho, e fora do mundo Microsoft, um script pequeno numa linguagem que lê o arquivo diretamente faz o mesmo trabalho em arquivos que dá para comparar com diff. Nenhum dos dois é motivo para reescrever uma macro que funciona. Os dois valem conhecer antes de escrever uma nova da qual cem pessoas vão depender.

Os dados, num lugar só

Identificadores e procedência do formato XLSM.
Extensão.xlsm
Tipo de mídiaapplication/vnd.ms-excel.sheet.macroEnabled.12
Publicado porMicrosoft
Primeira publicação2007
EspecificaçãoECMA-376