In een andere tip doen we uit de doeken hoe we een functie uit de Windows API kunnen oproepen vanuit een Excel-macro. Als voorbeeld gebruiken we daarbij een API-oproep om de hoeveelheid geheugen te weten te komen. Maar als dat onze enige doel zou zijn, bestaat er een eenvoudiger aanpak: de =INFO()-functie. Althans, dat denken we…
Om iets over het geheugengebruik te weten te komen, bestaan er drie mogelijke argumenten voor =INFO(): beschikbaar_geheugen, geheugen_gebruikt en totaal_geheugen. Plaatsen we deze drie woordcombinaties (let op: gescheiden door een ‘underscore’!) bijvoorbeeld in cellen A1, A2 en A3, met in de kolom ernaast de oproepen van de functie: =INFO(A1) in cel B1, =INFO(A2) in B2 enzovoort, dan krijgen we evenveel geheugenaantallen, uitgedrukt in bytes.
De =INFO()-functie geeft onjuiste geheugeninformatie.
Vergelijken we deze resultaten met wat onze API-functie geeft of met de waarden die we terugvinden onder het Prestaties-tabblad van het Windows Taakbeheer, dan valt er geen touw aan vast te knopen. Zowel Taakbeheer als onze API-oproep zijn het roerend eens over de totale hoeveelheid fysiek geheugen: 523.244 kB in ons voorbeeld, terwijl de functie =INFO(totaal_geheugen) het slechts over 2.142.676 bytes of amper 2.112 kB heeft. Geen wonder dan ook dat deze drie mogelijkheden afgevoerd zijn in Excel 2007…
Drie andere argumenten zijn iets preciezer, maar vergen dan weer enig vertaalwerk. Zo zou het gebruik vanhet argument systeem de naam van het besturingsysteem moeten opleveren, maar meer dan mac of pcdos komen we niet te weten. En dit terwijl de tijden van DOS al lang achter ons liggen…
Van het argument versie_excel verwachten we 2003 als antwoord te krijgen, maar het wordt 11.0 oftewel het interne versienummer hetgeen we aantreffen als we Help / Info kiezen en het eerste getal tussen de haakjes nemen. Dit is ook het achtervoegsel dat achter de foldernaam OFFICE geplakt staat op de plaats waar alle programmabestanden terug te vinden zijn.
Ook met versie_besturing hebben we ondertitels nodig: Windows (32-bit) NT 5.01 staat in werkelijkheid voor Windows XP.
Slechts een handvol argumenten van =INFO() zijn echt bruikbaar.
Blijven over als écht bruikbare parameters: aantal_bladen (het aantal werkbladen die we in ons werkboek hebben), directory (de momenteel actieve map voor opslag van bestanden) en herberekening (automatisch of handmatig). Vooral deze laatste kan handig zijn om een melding in te bouwen in werkbladen waarvan deze optie om een of andere reden afgezet werd.
Werkt op: Excel 2003