VBA alternatieven Office script en Python

VBA alternatieven Office script en PythonVBA staat voor Visual Basic for Applications. Dit is een afgeleide van de programmeertaal Visual Basic en richt zich specifiek op een applicatie, zoals bijvoorbeeld Excel. Volgens meerdere bronnen is in 2007 de laatste VBA update geweest. Vanaf dat moment heeft Microsoft de focus verlegd naar een nieuwe online oplossing, te weten Office script.

Office script

Al geruime tijd heeft Excel een nieuwe tab [Automatiseren]. Via deze tab kunnen repeterende handelingen worden opgenomen en worden afgespeeld gebaseerd op Office script. Deze functionaliteit is vergelijkbaar met het opnemen en afspelen van macro’s (VBA). De opgenomen programmeertaal van Office script is TypeScript, dit is een verlengstuk van JavaScript.  

Python

Uiteraard is er dan nog Python, een razend populaire programmeertaal. Deze taal kent - naast Excel ondersteuning - een scala aan andere mogelijkheden. Denk hierbij aan kantoorautomatisering, mobiele apps, websites, data visualisaties/analyse, games, etc.

Voorbeeld code

Ter vergelijking een stuk code die in Excel de leeftijd - in kolom C - genereert aan de hand van de geboortedatum in kolom B.

Sub plaatsLeeftijden()

    Dim r As Integer

    For r = 2 To ActiveSheet.UsedRange.Rows.Count

        ActiveSheet.UsedRange.Cells(r, 3).Value = (Date - ActiveSheet.UsedRange.Cells(r, 2)) / 365.25
    
    Next r

End Sub
function main(workbook: ExcelScript.Workbook) {

    let Bereik: ExcelScript.Range = workbook.getActiveWorksheet().getUsedRange();
    let r = 2

    for (let i = 1; r < Bereik.getRowCount(); i++) {

      Bereik.getCell(i, 2).setFormulaLocal("=(Vandaag()-B" + r +  ")/365,25");
      r++

    }
}

Zoals gebruikelijk wordt tijdens het opnemen de Engelstalige formules geregistreerd. Echter werkt dit niet in de praktijk. De Engelstalige formules zullen vertaald moeten worden naar de formules in de standaard geïnstalleerd taal.

from openpyxl import load_workbook
from datetime import datetime, timedelta

file = 'Scripts.xlsx'
wb = load_workbook(file)
ws = wb.active

for r in range(2, ws.max_row + 1):
    date_value = ws.cell(row=r, column=2).value
    if date_value:
        days_since = (datetime.today() - date_value).days
        ws.cell(row=r, column=3).value = days_since / 365.25

wb.save(file)

De automatische conversie van VBA naar Python m.b.v. ChatGPT ging opvallend makkelijk. Dit in tegenstelling tot de automatische conversie van VBA naar Office Script.

Conclusie

Windows macOS Opnemen Online iOS Toekomst
VBA
Office script
Python

VBA is een fantastische programmeertaal en werkt binnen Windows perfect met oneindig veel mogelijkheden op het gebied van kantoorautomatisering.

Voor de MAC bestaan genoeg workarounds om vergelijkbare toepassingen op te leveren. Helaas is het wel zo dat het gebruik van UserForms op de MAC niet meer mogelijk is.

Er zullen geen nieuwe updates meer komen maar VBA wordt wel voor onbepaalde tijd nog ondersteund. Gezien het wereldwijde gebruik zal mijn inziens voorlopig geen einde komen aan VBA. Geen reden tot paniek dus. Gebruikers kunnen op weg geholpen worden door een macro op te nemen of een Excel VBA training bij mij te volgen.

Het grote voordeel van Office script is dat dit ook gebruikt kan worden voor Excel in een webbrowser (online) of via een iPad of iPhone. Ook kan de code opgenomen worden, maar helaas is dit nog niet waterdicht. Vandaar dat dit nog een beta-functionaliteit is.

Python is een interessant alternatief voor degene die ook hun programmeer-skills willen uitbreiden buiten Excel. Een eventueel nadeel zijn de verschillende extra installaties die gedaan moeten worden. Dit omdat Python niet standaard geïntegreerd is in Excel. Wil je leren programmeren in Excel en/of daarbuiten met Python?, volg dan bij mij de Python basis training om kennis te maken met deze fantastische programmeertaal.