|
Microsoft Office Application Development
|
|
Excel-macro's geschikt maken voor anderen. Inleiding 1 2 3 4 5 6 7 8 9 10 Conclusie Menu'sDe macro’s en functies in de nieuwe invoegtoepassing moeten natuurlijk toegankelijk gemaakt worden voor de gebruiker. Hiertoe staan de Menu’s en taakbalken ter beschikking. Een extra item in het menu van Excel kan zeer eenvoudig worden gemaakt:
Deze werkwijze heeft echter een groot nadeel: de wijzigingen aan het menu worden lokaal opgeslagen in een systeembestand (afhankelijk van de Excel versie 97, 2000, XP 0f 2003 heet dit bestand respectievelijk gebruikersnaam8.xlb, excel.xlb, excel10.xlb of excel11.xlb) en het is op deze manier niet mogelijk het aangepaste menu op andere PC’s te installeren. De enige manier om dat wel te kunnen doen is door gebruik te maken van VBA (Zie Listing 1). Listing 1 Option Explicit De macro “MakeMenu” zorgt ervoor, dat in het Menu Extra een keuzemogelijkheid wordt toegevoegd. Dit wordt bereikt middels de regel: Set cControl = Application.CommandBars(1).FindControl(ID:=30007).Controls.Add _ (Type:=msoControlButton, temporary:=True) De findcontrol methode kan ook controls zoeken op basis van hun naam, maar dit is niet wenselijk omdat gebruikers met een andere taalversie van Excel dan hoogstwaarschijnlijk een foutmelding krijgen. De ID eigenschap is taalonafhankelijk. Het menu Extra kent een ID van 30007. De overige ID’s van Excel’s complete menu structuur zijn terug te vinden in het bestand xlmenufundict.zip dat gedownload kan worden vanaf deze pagina. Voor het gemak een overzichtje van de ID’s van de hoofditems in de werkbladmenubalk:
Door vanuit de macro MakeMenu eerst de macro RemoveMenu aan te roepen voordat het nieuwe item wordt aangemaakt, wordt voorkomen dat per ongeluk hetzelfde menuitem twee keer verschijnt (dit zou kunnen gebeuren indien om welke reden dan ook de macro MakeMenu twee keer wordt aangeroepen). De macro RemoveMenu dient vervolgens bij het sluiten van de invoegtoepassing te worden aangeroepen om het item uit het menu te verwijderen. Strikt genomen is RemoveMenu niet noodzakelijk omdat het argument “Temporary:=true” is gebruikt, hetgeen ervoor zorgt dat de wijzigingen aan het menu bij sluiten van Excel ongedaan worden gemaakt. Het is echter aan te bevelen dat het menu ook verdwijnt wanneer het bestand met de bijbehorende macro’s gesloten wordt en niet Excel als geheel (bijvoorbeeld wanneer de gebruiker besluit de invoegtoepassing te de-installeren).
| ||||||||||||||||||||||||||||||||||||||||
|
Use the contact page to issue
questions or comments about this website. |