Cookies voor statistiek en advertenties
We gebruiken cookies voor statistiek en voor advertenties, allebei naar Google. Weigeren verandert niets aan wat je te zien krijgt.Lees de privacypagina
XLSM
Een Excel-werkmap met ingebouwde macro’s.
XLSM
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
| Extensie | .xlsm |
|---|---|
| Mediatype | application/vnd.ms-excel.sheet.macroEnabled.12 |
| Uitgegeven door | Microsoft |
| Voor het eerst gepubliceerd | 2007 |
| Specificatie | ECMA-376 |