Wat is een ADD-in

Add-Inn's geven een uitbreiding bovenop de in de reeds in MS Access aanwezige functionaliteiten. Bepaalde kan men downloaden van de Microsoft website, men kan er tevens verkrijgen, al dan niet gratis, van andere ontwikkelaars. Tenslotte kan men er zelf ontwikkelen.

Hier ga ik het hebben over Add-inns die hoofdzakelijk op het niveau van mijn eigen MS Access toepassingen gebruikt worden. Men kan drie types Add-Inn's onderscheiden.

  1. De zogenaamde Wizards. Die bestaan uit een aantal formulieren, met keuze opties, en die helpen bij het creëeren van nieuwe objecten zoals Queries, Formulieren. Denk aan bijvoorbeeld aan de Query Wizards die standaard in MS Access voorzien zijn.
  2. Builders. Die bestaan uit één enkel formulier die de mogelijkheid bieden om eigenschappen in de ontwerp-modus van Formulieren en Rapporten in te stellen. Aan de hand van Builders kan men ook uitdrukkingen (expressies) samenstellen of schrijven.
  3. Menu Add-Inns. Deze kunnen opgevraagd worden, in het Tabblad 'Database Tools' via het 'Add-inss' icoontje wat de betreft de versies 2007 en 2010. Bij de voorgaande versies in het 'Tools' menu via het submenu 'Add-inns'. Menu Add-Inns zijn niet context gevoelig.

Ik heb enkele 'Menu Add-Inns' ontworpen, van de drie is dit de minst complexe. Feitelijk is een add-inn een MS Access database voorzien van VBA-code om de functionaliteit van de Add_Inn te verwezenlijken. De toepassing moet echter bewaard worden met de .accda extensie.
Ik start steeds met het  creëren van een nieuwe .accdb database, ik voorzie de nodige VBA-code en test deze goed uit. Vervolgens de extensie wijzigen. Sluit de database en wijzig via Windows verkenner de .accdb extensie in .accda . Geef geen aandacht aan de verwittiging dat door de wijziging van de extensie het bestand onbruikbaar kan worden.

Bij de versie 2003 en vorige gaat het over de extensie .mdb en mda voor de Add-Inn database.

Om als Add-Inn te kunnen fungeren moet in de .accda een tabel met de naam USysRegInfo gecreëerd worden. Deze tabel, samen met nog andere systeem-objecten is niet zichtbaar in het Access-objecten navigatie paneel. Om systeem objecten in het open .accda-bestand zichtbaar te maken gaat men via het menu 'Bestand' (File) naar 'Opties' (Options) keuze 'Huidige database' (Current database) en onder het item Navigatie (Navigation) drukt men op de knop 'Navigatie opties' (Navigation options) vervolgens kruist men de opties 'Toon verdoken objecten' (Show Hidden objects) en 'Toon systeem objecten' (Show System objects) aan.

Functioneel dient de USysRegInfo tabel om informatie van de Add-Inn te schrijven naar de Windows registry. Het is zeker noodzakelijk de juiste velden en correcte data te voorzien. Hierna de noodzakelijke velden voor een Menu Add-Inn :

FieldData TypeFunctioneel
SubkeyText (255)De naam van de registry Subkey waar de specifieke waarde
opgeslagen wordt.
TypeNumber(Long Integer)Volgende types zijn mogelijk :
key (0), string (1), DWORD (4)
ValNameText (255)Naam van registry waarde
ValueText (255)Waarde van registry waarde

Wanneer men éénmaal een USysRegInfo tabel ontworpen heeft, en de Add-Inn goed werkt, kan men voor het creëren van een volgende Add-Inn deze tabel in de nieuwe database importeren. Dit via het tabblad 'External data' en de keuze mogelijkheid 'Access'. Dan moet men zich niet meer bekommeren over het ontwerpen van de tabel en moet men enkel de inhoud van de rijen aanpassen.

Voor een 'Menu Add-Inn' komen er in de tabel UsysRegInfo drie rijen. Het is belangrijk dat deze rijen de juiste data bevatten.

Schema UsysRegInfo tabel.

SubkeyTypeValNameValue
HKEY_CURRENT_ACCESS_PROFILE\Menu Add-Ins\naam van de Add-Inn0
HKEY_CURRENT_ACCESS_PROFILE\Menu Add-Ins\naam van de Add-Inn1Library|ACCDIR\NaamVan.accda
HKEY_CURRENT_ACCESS_PROFILE\Menu Add-Ins\naam van de Add-Inn1Expression=FunctieNaam()
  1. Subkey veld : de waarde moet volgende structuur hebben
    HKEY_CURRENT_ACCESS_PROFILE\Menu Add-Ins\naam van de Add-Inn
    Voor een Add-Inn menu moet deze veldwaarde in ieder van de drie rijen herhaald worden.
  2. Type veld :
    1. Rij 1 : waarde 0
    2. Rij 2 : waarde 1
    3. Rij 3 : waarde 1
  3. ValName veld :
    1. Rij 1 : waarde blank
    2. Rij 2 : waarde Library
    3. Rij 3 : waarde Expression
  4. Value veld
    1. Rij 1 : waarde blank
    2. Rij 2 : waarde |ACCDIR\NaamVan.accda , waarde NaamVan= de naam van het .accda bestand
    3. Rij 3 : waarde =FunctieNaam() , De naam van de functie in de VBA code die de Add-Inn uitvoert.

Het is zeer belangrijk dat bovenstaande stappen correct uitgevoerd worden, want men moet er zich goed bewust van zijn dat er informatie naar de Windows registry geschreven wordt.

Waar moet het .accda bestand bewaard worden?
Dit is afhandelijk van de Versie van Windows.
Voor Access 2010 op een PC met Windows 7 is dit : C:\Users\Gebruiker\AppData\Roaming\Microsoft\AddIns waar gebruiker moet vervangen worden door de naam van de desbetreffende gebruiker

Eens bovenstaande stappen correct uitgevoerd kan de Add-Inn in Access via de Add-Inn manager geïnstalleerd worden.
Via het tabblad Database Tools en het Add-Inns icoontje kiest men Add-Inn manager, daar vind men de beftreffende Add-Inn met de omschrijving 'naam van de Add-Inn' die het laatste gedeelte is in het veld Subkey.

Begin