voorbeeldbestand
Lint aanpassen in Excel

MS heeft bij Office 2007 het lint ('Ribbon') geïntroduceerd.

Daardoor is het veel gecompliceerder geworden om bestanden of sjablonen eigen werkbalken te geven.
In Word / Excel kun je het lint wel aanpassen, maar alleen voor het basissjabloon (persnlk.xlsm resp. normal.dotm).

Ik heb in VBA een programma gemaakt om aan willekeurig welk Excel bestand een eigen tabblad in het lint toe te voegen. Je kunt er ook de eigen tabbladen van bestanden mee wijzigen.
De gebruiker hoeft dus niets van VBA, XML en zip afweten om aan bestanden tabbladen (commandbars) met knoppen (commandbarcontrols) toe te voegen, te verwijderen of te wijzigen.
Hiermee beoog ik de door MS bejubelde CUI Editor (zie de MS website) en de door MS beschreven (in mijn ogen 'clumsy') werkwijze om het lint aan te passen te vervangen.

Een inpak/uitpakprogramma

Er is echter 1 beperking: VBA kan geen gecomprimeerde bestanden lezen.
MS heeft sinds Office 2007 ervoor gezorgd dat ieder Office-bestand bestaat uit een gecomprimeerd bestand met diverse mappen en bestanden.
De aanpassingen van het lint staan in ingepakte bestanden. Die moeten worden gelezen/vervangen.
Om ervoor te zorgen dat alles geautomatiseerd verloopt met VBA kunnen we daarvoor gebruik maken van de commandline versie van het inpakprogramma IZarc.
Dat bevat een inpakprogramma izarcc.exe en een uitpakprogramma izarce.exe

Download dat programma van http://www.izarc.org/download.html (versie 1.1; de derde downloadknop) en pak het uit in een aparte directory (map/folder).

Daarna kun je het pad naar deze programma's opgeven in een invoerscherm bij opening van het bestand bij deze webpagina.
Zolang de inpak/uitpakprogramma's niet kunnen worden gevonden is de werkbalkicoon in de werkbalk 'SNB' niet zichtbaar.

Het bestand bij deze webpagina

Het bestand in de bijlage is een Excel bestand.
Een eigen werkbalk met startknoppen voor macro's is de meest voor de hand liggende toepassing.
Het bijgevoegde bestand gaat daarvan ook uit.
Omdat het hier om een eerste versie gaat blijft de functionaliteit hiertoe beperkt.
Latere versies kunnen uitgebreid worden.

Wat doet het bestand in de bijlage ?

Het bevat een userform:

- daarmee kun je het doelbestand openen waaraan je een eigen werkbalk in het lint wil toevoegen
- je kunt het toe te voegen tabblad ('custom Tab") een eigen naam ('label') geven
- je kunt aan het tabblad groepen toevoegen
- je kunt een groep een eigen naam ('label') geven
- je kunt een groep een eigen icoon geven
- je kunt aan een groep knoppen toevoegen om daarmee macro's te starten
- je kunt de namen ('labels') van de knoppen wijzigen
- je kunt een icoon aan de knop toevoegen / wijzigen
- je kunt aan de knop een macro koppelen / de koppeling wijzigen

- als een bestand al een eigen tabblad bevat wordt het in het userform ingelezen en kun je het tabblad, de groepen en de knoppen aanpassen (naam, icoon, macrokoppeling).

Het programma leest alle beschikbare macro's in het bestand en toont die in een lijst.
Het programma leest een eigen tabblad in het lint en geeft dat weer: namen, groepen, knoppen, iconen, gekoppelde macro's.
Het programma voegt het nieuwe/gewijzigde lint-tabblad toe of vervangt het bestaande lint-tabblad in het doelbestand.
Indien nodig voegt het programma aan de macro's in het doelbestand alle 'callbacks' toe.

De vormgeving van het userform sluit zoveel mogelijk aan bij de wizard waarmee je het lint in Excel zelf kunt aanpassen.

Werkwijze

- maak een Excelbestand met macro's; sla dat op
- open het 'lintprogramma'
- voer indien gevraagd het volledige pad in waar zich het inpak- en uitpakprogramma bevinden.
- start het userform met de knop 'lint aanpassen' in het tabblad 'SNB' van het lint
- open via het userform het opgeslagen bestand met de macro's, waarvoor je een eigen tabblad in het lint wil maken.
- breng je wijzigingen aan
- sla de wijzigingen op met de knop 'vervolg'

Hieronder staan 2 versies van het bestand, als Excel macro bestand (xlsm) en als Excel Addin (xlam)

Excel: lint aanpassen


Excel addin: lint aanpassen