Excel Office Script Basis
Inhoud
Inleiding
Sinds Juli 2020, kunnen Microsoft 365 gebruikers hun acties in Excel
laten opnemen als Office Script macro's. Dit artikel laat zien hoe je daarmee
aan de slag kunt gaan. Ik heb ook
voorbeeld scriptjes
gemaakt die
je niet kunt opnemen, maar wel nuttig zijn.
De Automatiseren tab zichtbaar
krijgen
Allereerst moet het mogelijk gemaakt worden dat je Office script kunt
opnemen. Dit moet worden gedaan door je Microsoft 365 administrator. Mocht
je een eenmanszaak hebben, dan ben je dat mogelijk zelf. Zo niet, dan kan
je jouw beheerder in ieder geval laten zien wat hij of zij moet doen om
dat voor je te regelen.
- Ga naar https://office.com en klik
op de beheer knop:

- Klik in de beheeromgeving op het zoekvak en tik "Office Script"
en klik op de gevonden verwijzing zoals hieronder aangegeven:

- Een taakvenster opent met de in te stellen mogelijkheden. merk op
dat de beheerder iedereen toegang kan geven tot de Office scripts, maar
ook alleen specifieke groepen. Ik heb het als volgt ingesteld staan:

Vreemd genoeg probeerde ik later diezelfde stappen die ik hierboven beschreef
nog eens te doen, maar ik kreeg toen geheel andere zoekresultaten. Daarom
hier de handmatige stappen:
- Open de beheeromgeving en klik op "Alles weergeven":

- Klik vervolgens op Instellingen, Organisatie-instellingen en scrol
dan omlaag tot Office Scripts in beeld komt. Klik daarop:

- Dit geeft je hetzelfde venster als bij de vorige stap 3.
De Automatiseren tab gebruiken
Zodra de beheer wijziging doorgedrongen is tot jouw account (en dit kan
echt wel even duren, wel twee hele dagen!), zou de Automatiseren tab in
het lint zichtbaar moeten zijn als je een Excel bestand in je browser opent:
Laten we eens kijken welke opties we hebben.
Acties vastleggen knop
Wat, echt? Een online macro recorder? Jazeker, een online macro recorder!
Wat neemt deze recorder dan op? De Acties vastleggen knop neemt alle
bewerkingsstappen op en vertaalt die naar een speciale versie van Office
JavaScript (Office-JS). Gelukkig heeft Microsoft de moeite genomen om het
meest gecompliceerde aspect van het programmeren van Office JavaScript voor
de gebruiker te verbergen.
Omdat JavaScript in de browser wordt uitgevoerd,
moet het communiceren met een server (Excel online), hierdoor worden de
meeste programmaopdrachten asynchroon verwerkt. Office JS code werkt dus
niet hetzelfde als VBA code. VBA verwerkt iedere regel meteen. Dit betekent
dat het "uitvoeren" van een regel JavaScript meer lijkt op het sturen van
een verzoekje aan de server waarop Excel draait. Het is de taak van die
server om dat verzoek uit te voeren, maar wanneer dat precies gebeurt dat
weet jouw code niet. Je kan er dus niet vanuit gaan dat een regel is uitgevoerd
voordat de volgende regel wordt verwerkt. Dit principe wordt goed uitgelegd
in
deze documentatie.
Maar ik zei het al, dit gecompliceerde aspect van Office Script is voor
ons verborgen, waardoor Office Script min of meer hetzelfde werkt als VBA
code.
De recorder start direct nadat je op de knop Acties vastleggen hebt geklikt.
Je hoeft dus niet eerst een naam of locatie voor de macro op te geven, zoals
wanneer je de VBA macro recorder start:

Merk op dat er een linkje genaamd "Meer informatie" staat onderaan het
venster. Dat verwijst naar de
officiële Microsoft uitleg over het opnemen van scripts.
Ik deed drie dingen: Ik voegde een nieuw werkblad in, typte mijn naam
in cel A1 en voerde de datum van vandaag in in cel A2. Het venster ziet
er nu zo uit:

De recorder heeft de stappen die ik uitvoerde opgenomen en er is een
"Kopiëren als code" link verschenen. Als je daarop klikt wordt de code die
tot nu toe is opgenomen op het klembord geplaatst. Verder is er een "Opnieuw
starten" knop en een Stoppen knop. Opnieuw starten zorgt ervoor dat je opgenomen
stappen worden verwijderd en Stoppen -nu ja- stopt de opname.
Klik je op Stoppen, dan wordt het scrip opgeslagen onder een standaard
naam, die je later nog kunt wijzigen:

En natuurlijk heeft Microsoft de belangrijkste mogelijkheden verborgen
achter de drie punten:

Dit is dus waar de mogelijkheid om je script een andere naam te geven
is verborgen, evenals de mogelijkheid om je script met collega's te delen,
of door de Delen keuze te gebruiken, of door gebruik te maken van de Knop
Toevoegen keuze (zie hieronder). En niet te vergeten de belangrijke mogelijkheid
om een script deel uit te laten maken van een Flow (matig vertaald tot "Stroom").
Hoe ziet de opgenomen code er nu uit? Daarvoor klikken we op "Bewerken"!
Hier zie je hoe mijn acties zijn vertaald naar Office Script:

Werk in uitvoering
Je zult al snel merken dat Office script nog werk-in-uitvoering is, er
zijn acties die de recorder nog niet kan opnemen. Als dat gebeurt, dan toont
het recordervenster de tekst "Deze actie kan nog niet worden opgenomen":

Deze niet opgenomen acties staan als commentaarregels in je code:
// Unknown event received with eventId:578
// Unknown event received with eventId:578
Microsoft werkt er hard aan om nieuwe acties aan de recorder toe te voegen.
Ik was onder de indruk hoeveel acties er al waren toegevoegd sinds ik de
script recorder voor het eerst had geprobeerd.
Nieuw Script knop
Als je het aandurft dan is dat de manier om direct te beginnen om zelf
een Office Scripts te schrijven!
Recente Scripts galerij
Microsoft houdt een lijst bij van recent gebruikte of opgenomen scripts
in de "Mijn recente scripts" galerij:

Het ligt voor de hand waarvoor de knop "Alle scripts" dient. Belangrijker
voor beginners zijn wellicht de voorbeelden waar je hier ook uit kunt kiezen.
Zie je? Niks moeilijks aan. Ik stel voor dat je er eens mee gaat experimenteren.
Probeer eens allerlei acties op te nemen.
Hier enkele voorbeelden
van scripts die je niet kunt opnemen.
Een Script starten
Op het moment zijn er drie manieren om een script te starten:
- Door op "Uitvoeren" te klikken in het Script Code Editor venster
- Door een
Run script
trigger in een Power Automate Flow
- Door een knop toe te voegen (zie hieromder)
Nadat je "Knop Toevoegen" gekozen hebt zal Excel een knop invoegen met
als titel de naam van het Script:

De knop wordt ingevoegd op de huidige actieve cel, dus het is verstandig
eerst de cel te selecteren waar je de knop hebben wil.

Na een klik op de knop start het script en opent het Script Editor paneel
om de voortgang te tonen:

Als het script klaar is, dan toont het venster het resultaat:

Een script knop werkt ook op desktop Excel, mits je
de beschikking hebt over de nieuwste versie van Microsoft 365, op het
moment echter alleen nog indien u deelneemt aan het Insider programma.
Meer leesvoer
Hier een artikel met script
voorbeelden
Hierbij enkele koppelingen naar de (Engelse) documentatie van Microsoft
over Office Scripts:
Office Scripts documentation
Office Scripts API reference
Introduction to Office Scripts in Excel