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.

  1. Ga naar https://office.com en klik op de beheer knop:
    De beheer knop op Office.com
  2. Klik in de beheeromgeving op het zoekvak en tik "Office Script" en klik op de gevonden verwijzing zoals hieronder aangegeven:
    Het Microsoft 365 Beheercentrum zoekvak  met Office Script
  3. 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:
    Microsoft 365 Beheercentrum Office Script instellingen

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:

  1. Open de beheeromgeving en klik op "Alles weergeven":
    Microsoft 365 Beheercentrum Alle instellingen
  2. Klik vervolgens op Instellingen, Organisatie-instellingen en scrol dan omlaag tot Office Scripts in beeld komt. Klik daarop:
    Microsoft 365 Beheercentrum Office Scripts In Organisatie instellingen
  3. 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:

Automatiseren tab in Excel online

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:

Het taakvenster Acties vastleggen in Excel online

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:

Het taakvenster Acties vastleggen in Excel online

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:

Het taakvenster Code-editor in Excel online

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

Het taakvenster Code-editor in Excel online

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:

Opgenomen Office Script Code in Excel online

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":

Acties die niet konden wornde opgenomen in Excel online

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:

Recent Scripts gallery in Excel online

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:

  1. Door op "Uitvoeren" te klikken in het Script Code Editor venster
  2. Door een Run script trigger in een Power Automate Flow
  3. 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:

Het Code Editor venster in Excel on-line

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

Een zojuist ingevoegde Script knop in Excel on-line

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

Het Script Editor venster opent nadat je op een Script knop hebt geklikt in Excel on-line

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

Het Script Editor venster toont het resultaat van het uitvoeren van het Script nadat je op een Script knop hebt geklikt in Excel on-line

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

 


Vragen, suggesties en opmerkingen

Heeft u vragen, suggesties of opmerkingen? Gebruik dan dit formulier.

Mocht uw vraag niet direct relevant zijn voor deze pagina, maar een algemene Excel vraag betreffen, dan adviseer ik om deze hier te stellen: excelexperts.nl/forum/index.php.




Als u VBA code in uw commentaar plaatst, gebruik dan [VB] tags: [VB]Uw code[/VB].