XLSM

Che cos’è un file XLSM?

Una cartella di lavoro di Excel con le macro incorporate.

Che cos’è XLSM

XLSM è un contenitore: un involucro per flussi codificati da qualcos’altro. Si usa per la modifica.

L’estensione è .xlsm e il nome per esteso è Excel Macro-Enabled Workbook. Contano entrambi meno di ciò che il file può contenere, ed è di questo che parla il resto della pagina.

Da dove viene XLSM

Microsoft lo ha pubblicato nel 2007. La specifica è ECMA-376.

L’età serve saperla per un motivo pratico: più un formato è vecchio, più programmi hanno avuto tempo di impararlo.

La specifica è pubblica

È pubblicata per intero, quindi la si può implementare partendo dal documento invece che per osservazione: è per questo che il formato compare in così tanti programmi, ed è per questo che file scritti vent’anni fa si aprono ancora. Una specifica pubblicata però non è la stessa cosa di una esente da royalty: dove un formato incapsula un codec, le licenze sui brevetti restano una questione a parte che lo standard non risolve.

Può contenere più pagine in un solo file

Un file XLSM non è limitato a una pagina, e la cosa conta quando lo si converte in qualcosa che invece lo è: una conversione produce un solo file con dentro una sola pagina — la prima, a meno che non sia una di quelle che il convertitore ti lascia scegliere.

Può contenere macro

XLSM può portare codice eseguibile, e di solito è proprio questo il motivo per cui qualcuno incontra questa estensione: un server di posta o un portale documentale l’ha respinta. Convertire in un formato senza macro è la via d’uscita abituale — e sì, le macro dopo non ci sono più.

Che tipo di documento è

XLSM contiene un foglio di calcolo: celle, formule e i fogli attorno.

È questo a decidere come si converte: un foglio di calcolo diventa un’area di stampa, e dove si spezzano le colonne è una decisione che qualcuno deve prendere.

Che cosa apre XLSM

Microsoft Excel lo legge, e lo stesso vale per quasi tutti i programmi dello stesso tipo.

Quando un file non si apre, il formato è raramente il problema: più spesso è il programma a essere più vecchio di lui. Convertire in qualcosa di più vecchio è la via d’uscita affidabile, ed è a questo che serve il resto di questo sito.

Aprirlo nel browser

Nessun browser lo legge.

È di gran lunga il motivo più comune per convertirlo: non che il formato sia scadente, ma che il posto in cui vuoi mostrare il file non sappia leggerlo.

È un formato di lavoro

XLSM è pensato per essere aperto e modificato. Tieni il file in questo formato per tutto il tempo in cui il lavoro va avanti, ed esporta da lì ogni volta che serve una copia finita.

L’estensione è un’etichetta d’avviso, di proposito

XLSM e XLSX sono lo stesso formato. Entrambi sono pacchetti ZIP di XML, entrambi conservano gli stessi fogli, formule e formattazioni, e l’unica differenza è che un XLSM può contenere un progetto VBA e un XLSX no.

Quella separazione era l’obiettivo. Prima del 2007 una cartella poteva contenere macro senza che l’estensione dicesse nulla, e i fogli di calcolo sono stati una delle vie d’ingresso per malware più efficaci mai usate. Separare le estensioni permette a chi riceve il file di vedere, prima di aprire qualcosa, se dichiara di contenere codice. È più stretto che essere sicuro — le formule DDE e gli oggetti OLE incorporati vivono anche in un normale XLSX — ma è la garanzia su cui sono costruite tutte le regole di filtraggio.

Che cosa può arrivare a fare una macro

VBA è un linguaggio di programmazione completo con accesso al file system, alla rete e ad altre applicazioni. Una macro può leggere e scrivere file dove l’utente può farlo, inviare dati all’esterno, lanciare programmi e modificare altri documenti. Non è un linguaggio di formule chiuso dentro il foglio.

Questa è la ragione onesta della cautela. La stragrande maggioranza delle macro è l’automazione di un report, scritta da un collega, che fa esattamente ciò che dice. La minoranza che non lo è ha le stesse capacità, e il file non offre alcun modo di distinguerle salvo leggere il codice.

Perché non si eseguono all’apertura

Excel disattiva le macro di default e mostra un avviso. Se il file è arrivato da internet o come allegato email, Windows lo contrassegna con un indicatore di zona, e dal 2022 Excel blocca direttamente le macro in quei file: una barra rossa invece di un pulsante per attivarle.

Il modo previsto per risolverlo con un file affidabile è sbloccarlo nelle proprietà del file, oppure lasciarlo in una cartella configurata come posizione attendibile. Ciò a cui conviene resistere è l’abitudine di cliccare senza guardare: il blocco esiste perché quel clic è stato l’ultimo passo di un numero altissimo di incidenti reali.

Dove sta il codice e perché è opaco

Il progetto VBA viene salvato dentro lo ZIP come flusso binario: l’unica parte di un pacchetto Office Open XML che non è XML leggibile. Rinominate il file in .zip e apritelo, e vedrete i fogli in testo chiaro e la macro come un blocco illeggibile.

Ispezionare una macro significa quindi aprire l’editor VBA in Excel o in LibreOffice, cosa che quasi nessuno farà e che è l’unico modo affidabile di sapere cosa fa una cartella. Significa anche che un sistema di controllo versione non può mostrare una differenza utile del codice, motivo per cui l’automazione seria dei fogli di calcolo finisce per abbandonare VBA a favore di qualcosa che vive in file di testo.

L’unica conversione che offriamo qui è verso PDF

Da XLSM esce una sola via, ed è il PDF. La esegue LibreOffice in un contenitore che paghiamo noi, quindi la cartella viene caricata: viaggia verso api.quinvert.com, viene scritta con un nome neutro in una cartella temporanea appena creata — il nome che gli avete dato voi non tocca il disco — e quella cartella viene cancellata al termine, anche su ogni percorso di errore. Il contenitore non ha accesso a internet e il risultato torna contrassegnato per non essere messo in cache.

Il tetto è di 25 MB per file, contro i 100 MB delle conversioni risolte nel browser, e c’è una quota di cento conversioni server per visitatore al giorno che si azzera a mezzanotte UTC. La nota della conversione dice l’essenziale: l’impaginazione viene riprodotta con font sostitutivi di metrica compatibile, e macro, commenti e tracciamento delle modifiche non passano. Per un XLSM quest’ultimo punto non è un difetto: è proprio lo scopo.

Neanche questo sito scrive alcun XLSM

XLSM è dichiarato nel registro come formato che si legge e non si scrive. Nessuna regola può produrre una conversione che finisca in un .xlsm, quindi non troverete un’uscita verso di esso.

Ha senso: generare un contenitore la cui unica particolarità è poter ospitare codice, quando ciò che esce da una conversione non ha codice da ospitare, sarebbe fabbricare un’etichetta d’avviso senza nulla dietro. Ciò che lo strumento di rimozione metadati fa invece è accettare l’XLSM fra i formati Office che ripulisce, insieme a XLSX, DOCX, DOCM, DOTX e PPTX: lì vengono svuotati autore, azienda, date e tempo totale di modifica senza toccare i fogli né il progetto VBA.

Salvarlo come XLSX porta via l’automazione

Salvare un XLSM come XLSX elimina il progetto VBA e conserva tutto il resto: fogli, formule, formattazione, grafici, nomi definiti. Excel avvisa prima di farlo, e quell’avviso è l’intera operazione.

È esattamente ciò che volete con una cartella ricevuta dall’esterno di cui dovete solo leggere i numeri, ed esattamente ciò che non volete con un file la cui automazione è la sua ragion d’essere. La distinzione è semplice: se la cartella fa qualcosa premendo un pulsante, convertirla la rompe; se salva solo dati, convertirla la rende più sicura.

Quando una cartella è diventata troppo grande per il VBA

Un progetto VBA diventato il modo in cui lavora un intero reparto è un rischio che merita di essere nominato: il codice è opaco per il controllo di versione, gira solo dove gira Excel, si rompe rinominando un foglio, e di solito lo mantiene una sola persona che peraltro se n’è già andata.

La direzione che propone la stessa Microsoft per quel lavoro sono gli Office Script e gli strumenti di automazione dei flussi; al di fuori di quel mondo, un programma breve in un linguaggio che legga il file direttamente fa lo stesso su file che si possono davvero confrontare. Nessuna delle due cose è motivo per riscrivere una macro che funziona. Entrambe meritano di essere conosciute prima di scriverne una nuova da cui dipenderanno cento persone.

I dati, in un posto solo

Identificativi e provenienza del formato XLSM.
Estensione.xlsm
Tipo di mediaapplication/vnd.ms-excel.sheet.macroEnabled.12
Pubblicato daMicrosoft
Prima pubblicazione2007
SpecificaECMA-376