XLSM

Wat is een XLSM-bestand?

Een Excel-werkmap met ingebouwde macro’s.

Wat XLSM is

XLSM is een container: een omhulsel voor stromen die door iets anders zijn gecodeerd. Het wordt gebruikt voor bewerken.

De extensie is .xlsm en de volledige naam Excel Macro-Enabled Workbook. Allebei zeggen ze minder dan wat het bestand kan bevatten, en daar gaat de rest van deze pagina over.

Waar XLSM vandaan komt

Microsoft bracht het in 2007 uit. De specificatie is ECMA-376.

De leeftijd is om een praktische reden interessant: hoe ouder een formaat, hoe meer programma’s de tijd hebben gehad om het te leren.

De specificatie is openbaar

Ze is volledig gepubliceerd, dus wie het formaat wil uitvoeren kan dat uit het document doen in plaats van door te kijken hoe anderen het doen. Daarom duikt het in zo veel programma’s op, en daarom gaan bestanden van twintig jaar geleden nog steeds open. Openbaar is niet hetzelfde als royaltyvrij: waar een formaat een codec omhult, is de octrooilicentie een aparte vraag waarop de standaard geen antwoord geeft.

Het kan meerdere pagina’s in één bestand bevatten

Een XLSM-bestand is niet tot één pagina beperkt, en dat telt bij het converteren naar iets dat dat wel is: één omzetting levert één bestand op met daarin één pagina — de eerste, tenzij de omzetter je laat kiezen welke.

Het kan macro’s bevatten

XLSM mag uitvoerbare code meedragen, en meestal is dat precies de reden dat iemand deze extensie überhaupt tegenkomt: een mailserver of een documentportaal heeft hem geweigerd. Converteren naar een formaat zonder macro’s is de gebruikelijke weg eromheen — en ja, de macro’s zijn daarna weg.

Wat voor document het is

XLSM bevat een rekenblad: cellen, formules en de bladen eromheen.

Daaruit volgt hoe het converteert: een rekenblad wordt een afdrukbereik, en waar de kolommen breken is een beslissing die iemand moet nemen.

Wat XLSM opent

Microsoft Excel leest het, en de meeste programma’s van dezelfde soort ook.

Als een bestand niet opengaat ligt het zelden aan het formaat — vaker is het programma ouder dan het formaat. Converteren naar iets ouders is de betrouwbare weg eromheen, en daarvoor is de rest van deze site bedoeld.

Het in de browser openen

Geen enkele browser leest het.

Dat is veruit de meest voorkomende reden om het te converteren: niet dat het formaat slecht is, maar dat de plek waar je het bestand wilt tonen het niet kan lezen.

Het is een werkformaat

XLSM is bedoeld om te openen en te wijzigen. Houd het bestand in dit formaat zolang het werk loopt, en exporteer eruit wanneer er een afgeronde versie nodig is.

De extensie is bewust een waarschuwingslabel

XLSM en XLSX zijn hetzelfde formaat. Beide zijn ZIP-pakketten van XML, beide bevatten dezelfde bladen, formules en opmaak, en het enige verschil is dat een XLSM een VBA-project kan bevatten en een XLSX niet.

Die scheiding was het punt. Vóór 2007 kon een werkmap macro’s dragen zonder dat de extensie dat verried, en rekenbladen waren een van de effectiefste malware-leveringsroutes ooit. Gescheiden extensies laten een ontvanger zien, vóór het openen, of een bestand een VBA-project claimt.

Wat een macro echt kan

VBA is een volledige programmeertaal met toegang tot het bestandssysteem, het netwerk en andere toepassingen. Een macro kan bestanden lezen en schrijven overal waar de gebruiker dat kan, data versturen, programma’s starten.

Dat is de eerlijke reden voor de voorzichtigheid. De overweldigende meerderheid van macro’s is iemands rapportautomatisering. De minderheid die dat niet is, heeft dezelfde mogelijkheden, en het bestand geeft geen manier om ze te onderscheiden zonder de code te lezen.

Waarom de macro’s niet draaien als je het opent

Excel schakelt macro’s standaard uit en toont een balk. Kwam het bestand van internet of een e-mailbijlage, dan markeert Windows het extra met een zonevlag, en sinds 2022 blokkeert Excel macro’s in zulke bestanden ronduit.

De bedoelde oplossing voor een bestand dat je vertrouwt, is het deblokkeren in de eigenschappen, of het in een vertrouwde map plaatsen. Weersta de gewoonte om zomaar door te klikken: de blokkade bestaat omdat die klik de laatste stap was in veel echte incidenten.

Waar de code leeft, en waarom die ondoorzichtig is

Het VBA-project wordt in de ZIP opgeslagen als een binaire stroom — het enige deel van een Office Open XML-pakket dat geen leesbare XML is. Hernoem het bestand naar .zip en de bladen zijn platte tekst, de macro een onleesbare blob.

Een macro inspecteren betekent dus de VBA-editor openen, wat de meesten niet doen en de enige betrouwbare manier is om te weten wat een werkmap doet. Het betekent ook dat versiebeheer geen zinvol verschil van de code kan tonen.

Omzetten naar XLSX strippt de automatisering

Een XLSM opslaan als XLSX verwijdert het VBA-project en behoudt al het andere — bladen, formules, opmaak, diagrammen. Excel waarschuwt vooraf, en die waarschuwing is de hele transactie.

Dat is precies wat je wilt voor een werkmap waarvan je alleen de cijfers hoeft te lezen, en precies wat je niet wilt voor een bestand waarvan de automatisering het doel is. Doet de werkmap iets bij een knop, dan breekt omzetten het; bevat het alleen data, dan maakt omzetten het veiliger.

En omzetten naar PDF of CSV

PDF voor alles wat verstuurd of gearchiveerd wordt. Het resultaat ligt vast, bevat geen uitvoerbare inhoud, en neemt zowel de opmaak- als de macrovraag in één stap weg.

CSV wanneer het doel een database of analysepijplijn is. Het draagt één blad waarden en niets anders — geen formules, geen opmaak, geen code.

Wanneer een werkmap macro’s ontgroeid is

Een VBA-project dat de manier is geworden waarop een afdeling werkt, is een aansprakelijkheid om te benoemen: de code is ondoorzichtig voor versiebeheer, draait alleen waar Excel draait, en wordt meestal door één persoon onderhouden die intussen vertrokken is.

Microsofts eigen richting is Office Scripts en Power Automate voor dat werk. Geen van beide is een reden om een werkende macro te herschrijven — wel de moeite waard om te kennen voordat je een nieuwe schrijft waar honderd mensen van afhangen.

De gegevens, op één plek

Kenmerken en herkomst van het formaat XLSM.
Extensie.xlsm
Mediatypeapplication/vnd.ms-excel.sheet.macroEnabled.12
Uitgegeven doorMicrosoft
Voor het eerst gepubliceerd2007
SpecificatieECMA-376