Cookies de estadística y publicidad
Usamos cookies de estadística y de publicidad, y ambas van a Google. Si rechazas, para ti no cambia nada visible.Ir a la página de privacidad
XLSM
Un libro de Excel con macros incorporadas.
XLSM
XLSM es un contenedor: una envoltura para flujos que ha codificado otra cosa. Se usa para la edición.
La extensión es .xlsm y el nombre completo, Excel Macro-Enabled Workbook. Ambos importan menos que lo que el archivo puede contener, y de eso trata el resto de esta página.
Microsoft lo publicó en 2007. La especificación es ECMA-376.
La edad interesa por un motivo práctico: cuanto más antiguo es un formato, más programas han tenido tiempo de aprenderlo.
Está publicada entera, así que cualquiera puede implementarla leyendo el documento en vez de a base de inspeccionar archivos. Por eso aparece en tantos programas, y por eso los archivos escritos hace veinte años siguen abriéndose hoy. Publicada no quiere decir libre de regalías: cuando un formato envuelve un códec, la licencia de las patentes es un asunto aparte que la norma no resuelve.
Un archivo XLSM no está limitado a una página, y eso importa al convertirlo a algo que sí lo está: de una conversión sale un único archivo con una sola página dentro — la primera, salvo que el conversor te deje elegir cuál.
XLSM tiene permitido llevar código ejecutable, y esa suele ser la única razón por la que alguien se topa con esta extensión: un servidor de correo o un portal de documentos la rechazó. Convertir a un formato sin macros es la salida habitual, y sí, las macros desaparecen por el camino.
XLSM contiene una hoja de cálculo: celdas, fórmulas y las hojas a su alrededor.
Eso decide cómo se convierte: una hoja de cálculo se vuelve un área de impresión, y dónde cortan las columnas es una decisión que alguien tiene que tomar.
Microsoft Excel lo lee, y también la mayoría de programas del mismo tipo.
Cuando un archivo no se abre, el formato rara vez es el problema: lo más habitual es que el programa sea anterior al formato. Convertir a algo más antiguo es la salida fiable, y para eso está el resto de este sitio.
Ningún navegador lo lee.
Ese es el motivo más frecuente para convertirlo: no que el formato sea malo, sino que el sitio donde quieres mostrar el archivo no sabe leerlo.
XLSM está pensado para abrirse y cambiarse. Guarda el archivo en este formato mientras el trabajo siga en marcha y exporta desde él cada vez que haga falta una copia terminada.
XLSM y XLSX son el mismo formato. Los dos son paquetes ZIP de XML, los dos guardan las mismas hojas, fórmulas y formatos, y la única diferencia es que un XLSM puede contener un proyecto de VBA y un XLSX no puede.
Esa separación era el objetivo. Antes de 2007 un libro podía llevar macros sin que la extensión dijera nada, y las hojas de cálculo fueron una de las vías de entrada de malware más eficaces que se han usado. Separar las extensiones permite que quien recibe el archivo vea, antes de abrir nada, si dice contener código. Eso es más estrecho que ser seguro — las fórmulas DDE y los objetos OLE incrustados viven también en un XLSX corriente —, pero es la garantía sobre la que están construidas todas las reglas de filtrado.
VBA es un lenguaje de programación completo con acceso al sistema de archivos, a la red y a otras aplicaciones. Una macro puede leer y escribir archivos allí donde el usuario pueda, enviar datos fuera, lanzar programas y modificar otros documentos. No es un lenguaje de fórmulas encerrado en la hoja.
Esa es la razón honesta de la cautela. La inmensa mayoría de las macros son la automatización de un informe, escrita por un compañero, haciendo exactamente lo que dice. La minoría que no lo es tiene las mismas capacidades, y el archivo no ofrece ninguna forma de distinguirlas salvo leer el código.
Excel desactiva las macros por defecto y muestra un aviso. Si el archivo llegó de internet o como adjunto de un correo, Windows además lo marca con un indicador de zona, y desde 2022 Excel bloquea las macros en esos archivos directamente: una barra roja en lugar de un botón para habilitarlas.
La forma prevista de resolverlo con un archivo de confianza es desbloquearlo en las propiedades del archivo, o dejarlo en una carpeta configurada como ubicación de confianza. Lo que conviene resistir es la costumbre de pulsar sin mirar: el bloqueo existe porque ese clic fue el último paso de un número altísimo de incidentes reales.
El proyecto de VBA se guarda dentro del ZIP como un flujo binario: la única parte de un paquete Office Open XML que no es XML legible. Renombra el archivo a .zip y ábrelo, y verás las hojas en texto claro y la macro como un bloque ilegible.
Inspeccionar una macro significa entonces abrir el editor de VBA en Excel o en LibreOffice, cosa que casi nadie hará y que es la única manera fiable de saber qué hace un libro. También significa que un sistema de control de versiones no puede mostrar una diferencia útil del código, que es el motivo por el que la automatización seria de hojas de cálculo acaba abandonando VBA por algo que viva en archivos de texto.
Desde XLSM sale un solo camino, y es PDF. Lo hace LibreOffice en un contenedor que pagamos nosotros, de modo que el libro se sube: viaja a api.quinvert.com, se escribe con un nombre neutro en una carpeta temporal recién creada — el nombre que tú le pusiste no llega a tocar el disco — y esa carpeta se borra al terminar, también por cada camino de error. El contenedor no tiene salida a internet y el resultado vuelve marcado para no guardarse en caché.
El tope son 25 MB por archivo, frente a los 100 MB de las conversiones que se resuelven dentro del navegador, y hay un cupo de cien conversiones de servidor por visitante y día que se reinicia a medianoche UTC. La nota de la conversión dice lo esencial: la maquetación se reproduce con tipografías sustitutas de métrica compatible, y las macros, los comentarios y el control de cambios no pasan. Para un XLSM eso último no es un defecto: es justamente el punto.
XLSM está declarado en el registro como formato que se lee y no se escribe. Ninguna regla puede producir una conversión que termine en un .xlsm, así que no vas a encontrar una salida hacia él.
Tiene sentido: generar un contenedor cuya única particularidad es poder alojar código, cuando lo que sale de una conversión no tiene código que alojar, sería fabricar una etiqueta de advertencia sin nada detrás. Lo que sí hace la herramienta de metadatos es aceptar XLSM entre los formatos de Office que limpia, junto a XLSX, DOCX, DOCM, DOTX y PPTX: ahí se vacían el autor, la empresa, las fechas y el tiempo total de edición sin tocar las hojas ni el proyecto de VBA.
Guardar un XLSM como XLSX elimina el proyecto de VBA y conserva todo lo demás: hojas, fórmulas, formato, gráficos, nombres definidos. Excel avisa antes de hacerlo, y ese aviso es la operación entera.
Es exactamente lo que quieres con un libro recibido de fuera del que solo necesitas leer los números, y exactamente lo que no quieres con un archivo cuya automatización es su razón de ser. La distinción es sencilla: si el libro hace algo al pulsar un botón, convertirlo lo rompe; si solo guarda datos, convertirlo lo vuelve más seguro.
Un proyecto de VBA convertido en la forma en que trabaja un departamento es un riesgo que merece nombrarse: el código es opaco para el control de versiones, solo corre donde corre Excel, se rompe al renombrar una hoja y suele mantenerlo una sola persona que además ya se ha ido.
La dirección que propone la propia Microsoft para ese trabajo son los scripts de Office y las herramientas de automatización de flujos; fuera de ese mundo, un programa corto en un lenguaje que lea el archivo directamente hace lo mismo en archivos que sí se pueden comparar. Ninguna de las dos cosas es motivo para reescribir una macro que funciona. Las dos merecen conocerse antes de escribir una nueva de la que van a depender cien personas.
| Extensión | .xlsm |
|---|---|
| Tipo de medio | application/vnd.ms-excel.sheet.macroEnabled.12 |
| Publicado por | Microsoft |
| Primera publicación | 2007 |
| Especificación | ECMA-376 |