Het Excel bestandsformaat
Pagina's in dit artikel
Eigenschappen van besturingselementen van de formulieren werkset aanpassen
Omdat ik nieuwsgierig was naar de manier waarop Formulier controls in het Excel OpenXML bestandsformaat zijn opgenomen ben ik daar eens naar op zoek gegaan.
Demo bestand
Ik heb een klein bestandje gemaakt, met het volgende op Sheet1:
Demo bestand met een paar Formulier besturingselementen
Waar zijn de Formulierbesturingselementen opgeslagen
Als je het xlsx bestand hernoemd naar ...xlsx.zip, dan kan je het zip pakket openen en erin rondneuzen. Open de map xl en vervolgens de map Worksheets. Open sheet1.xml. Bijna onderaan dat bestandje vind je deze informatie:
Onderste deel van sheet1.xml, met de verwijzing naar de formulier
besturingselementen geselecteerd.
Om te zien waarnaar rId2 verwijst moet je de _rels map openen:
Venster van geopende zip container met in beeld de map worksheets\_rels
Open het bestand sheet1.xml.rels en zoek naar rId2:
Het relevante deel in bestand sheet1xml.rels
Nu weet je dus dat we het volgende bestand op moeten zoeken: ..\xl\drawings\vmlDrawing1.vml.
VML bestanden
Voor ieder werkblad met formulier besturingselementen erop zal de zip container één vml bestand bevatten.
in de Open XML specificatie zoals beschikbaar bij ecma (zoek naar "mark up language reference"), wordt VML beschreven als:
"Vector Markup Language (VML) is an XML-based exchange, editing and delivery format for high-quality vector graphics. VML facilitates the exchange and subsequent editing of vector graphics between a wide variety of productivity and design applications. VML is based on XML 1.0, which is an open, simple, text-based language for describing structured data. "
Formulier besturingselementen in een VML bestand.
Sleep het vml bestand vanuit verkenner naar de desktop en open de vml file vanaf je desktop.
Als je dit probeert met Internet explorer (omdat je de syntax kleuring en inspring opties van IE handig vindt), dan wacht je een onaangename verrassing: IE vraagt je of je het bestand wilt downloaden of opslaan. Dit sleept je in een oneindige lus, tenzij je voor annuleren kiest. Gelukkig is er een tool zoals "XML notepad" (gratis download), waarmee je de xml op verschillende manieren kan laten weergeven. Hier is die tool die het gedeelte toont van de checkbox:
XML Notepad toont het (geformatteerde) xml gedeelte van een checkbox van
de formulieren set op een Excel blad.
Hé! wat doet die font node daar? Meer dan 10 jaar al vertel ik mensen, dat je het lettertype van een checkbox van de formulieren besturingselementen niet kan veranderen. Kan het dan toch? Gewoon proberen!
Het lettertype van een checkbox veranderen (van de formulieren besturingselementen)
Opmerking (2013-01-15): Het lijkt er op, dat het gedrag van Excel is veranderd. Als je Excel 2010 gebruikt om een bestand te openen dat middels onderstaande truc is aangepast, dan wordt het lettertype van de checkbox niet langer beinvloed (wat eigenlijk wel logisch is, want je kon dit al niet aanpassen via de gebruikersinterface).
Schakel om naar de treeview tab van XML notepad (indien je die tool gebruikt) en bewerk de elementen "font face" en "size". Ik maakte er dit van:
<font face="Arial Black" size="320" .....
Laten we eens kijken wat dit met ons bestand heeft gedaan. Volg deze stappen:
- Sla het vml bestand op en sluit de editor;
- Sleep het vml bestand van je desktop (ik ga ervan uit dat je het vml bestand eerst uit de zip container hebt gesleept!!) naar de "Drawings" map in de xlsx.zip container en bevestig dat je de reeds aanwezige versie wilt vervangen;
- Sluit het verkenner venster van de zip container en hernoem het bestand terug van xlsx.zip naar xlsx;
- Open het bestand in Excel.
Verrassing! De checkbox ziet er nu zo uit:
Forms checkbox in Excel met aangepast lettertype
Laten we ons geluk eens proberen. Sla het bestand op als bestandstype Excel 97-2003. Probeer nu het bestand te openen in één van die Excel versies (Ik probeerde 2003). Gek genoeg werkt het nog ook!
De positie van een control veranderen
De positie van een control wordt bepaald door de "Anchor" node in de nodes die bij het control horen:
XML uit het bestand vmlDrawing1.vml met de sectie betreffende afmetingen
en positie geaccentueerd
Wat betekent dit? De eerste twee getallen geven aan waar de linker bovenhoek van het element zich bevindt op de horizontale as: de kolom (startend vanaf 0) en de verschuiving vanaf links ten opzichte van die kolom. De volgende twee getallen vertegenwoordigen het rijnummer (wederom startend met 0) en de verschuiving naar beneden (in pixels) vanaf de bovenkant van de rij. De volgende vier getallen doen hetzelfde voor de linker-benedenhoek.
Met andere woorden, in de xml code hierboven is de linkerbovenhoek van het besturingselement kolom E (de 1e 4 in de code), rij 3 (de eerste 2 in de code). Het element is 29 pixels (eerste 29 in de code) naar rechts verschoven en 0 (de eerste nul in de code) omlaag. De rechteronder hoek is cel I4, met een verschuiving naar rechts van 38 pixels en omlaag van 18, relatief ten opzichte van de linkerboven hoek van die cel.
Nou, dat is het dan. Ik hoop je een startpunt gegeven te hebben over hoe je met het nieuwe Excel 2007 Open XML bestandsformaat kunt werken.
Download
Je kan het bestand uit dit artikel hieronder downloaden:
Vragen, suggesties en opmerkingen
Al het commentaar over deze pagina:
Commentaar van: andries (9-3-2010 12:14:34) deeplink naar dit commentaar
Beste,
Ik zoek een manier om in Excel 2007 in een formulier een deel van een spreadsheet weer te geven. In Excel 2003 was er de Additional control "Microsoft Office Spreadsheet 11.0", maar in Excel 2007 is die er niet meer en het lijkt erop dat er ook geen alternatieve Additional Control is?
Al erg bedankt voor uw hulp!
Commentaar van: Jan Karel Pieterse (9-3-2010 22:20:24) deeplink naar dit commentaar
Hallo Andries,
Helaas zijn er geen "Office Web Components" gemaakt bij Excel 2007, dus zit je met een probleem als je die gebruikte.
Je zou een lege grafiek kunnen gebruiken met daar bovenop een plaatje van een bereik. Vervolgens exporteer je de grafiek naar een afbeeldingsbestand en toon je die afbeelding op je formulier.
Commentaar van: Jo Dekeyster (28-5-2010 05:56:04) deeplink naar dit commentaar
Het is me onmogelijk om de besturingselementen te activeren in Excel 2007;
het vakje invoegen van een besturingselement blijft GRIJS
(dus niet actief)
hoe kan ik dit aub opnieuw activeren ?
van harte bedankt voor uw info hierover
Commentaar van: Jan Karel Pieterse (28-5-2010 06:34:29) deeplink naar dit commentaar
Hallo Jo,
Kan het zijn dat het werkblad beveiligd is?
Commentaar van: Ton Lameijer (6-12-2013 00:16:59) deeplink naar dit commentaar
Hallo,
Ik ben een leek, dus keep it simpel. mijn probleem:ik heb in een cel pics geplaatst met behulp van opmerkinginvoegen/opmaken/opvuleff/afbeelding et. Nu verdwijnt in het ene excelbestand de pic niet en in een ander bestand wel, met de volgende opmerking:
Verwijderd onderdeel: /xl/drawings/vmlDrawing1.vml-onderdeel. (Tekenvorm)
De excel versie is 2010
Wat doe ik verkeer? Graag hulp en alvast bedankt
Ton Lameijer
Commentaar van: Jan Karel Pieterse (6-12-2013 12:03:35) deeplink naar dit commentaar
Hallo Tom,
Het lijkt erop dat Excel 2010 die plaatjes in commentaren niet accepteert. Er zit dus mogelijk ergens een corruptie in het bestand. Daar is weinig tegen te doen ben ik bang.
Heeft u vragen, suggesties of opmerkingen? Gebruik dan dit formulier.
Mocht uw vraag niet direct relevant zijn voor deze pagina, maar een algemene Excel vraag betreffen, dan adviseer ik om deze hier te stellen: excelexperts.nl/forum/index.php.