Het Excel bestandsformaat

Pagina's in dit artikel

  1. Werkblad gegevens
  2. Besturingselementen

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:

Enkele formulier besturingselementen op een Excel werkblad

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:

Een deel van het bestand sheet1.xml

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:

De map _rels in een Excel zip bestand

Venster van geopende zip container met in beeld de map worksheets\_rels

Open het bestand sheet1.xml.rels en zoek naar rId2:

De waarde voor rId2 in de map worksheets/_rels

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 met ons bestand geopend

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:

De nieuwe look van onze checkbox


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:

De Anchor node in de xml

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:

FormControls.zipip



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.




Als u VBA code in uw commentaar plaatst, gebruik dan [VB] tags: [VB]Uw code[/VB].