wijzig taal:

In dit artikel worden een aantal adviezen gegeven op het gebied van het voorkomen van compatibiliteitsproblemen. Ook wordt een overzicht gegeven van een aantal belangrijke verschillen tussen de diverse Excel-versies. Het gaat hierbij niet om verschillen in gebruiksgemak of bediening, maar met name om verschillen die kunnen leiden tot comptabiliteitsproblemen.

Omgaan met compatibiliteitsproblemen

Van Excel zijn ondertussen al heel veel verschillende versies uitgebracht. Bij het uitbrengen van een nieuwe versie wordt geprobeerd dat deze zoveel mogelijk ‘backward compatible’ is, hetgeen inhoudt dat het mogelijk is om oudere versies in te lezen en te bewerken in de nieuwere versie. Dit gaat over het algemeen vrij goed, alleen met macro’s/VBA kan dit soms problemen opleveren. Als applicaties worden ontwikkeld die ook geschikt moeten zijn voor een oudere versies, dan volgen hier een paar aandachtspunten:

  • Nieuwe functionaliteit zal uiteraard niet werken in oudere versies. Dat geldt ook voor VBA-code die gebaseerd is op deze nieuwe functionaliteit. In een volgende paragraaf wordt een overzicht gegeven van nieuwe functionaliteit per versie.
  • Als in Excel 2007 of hoger het bestand door middel van Opslaan Als wordt opgeslagen in een Excel 97-2003 indeling dan volgt een automatische check op comptabiliteitsproblemen. Macro’s/VBA worden hierbij niet gecontroleerd. Deze comptabiliteitscheck kan ook opgestart worden via Bestand→Info→Controleren op problemen→Comptabiliteit controleren.
  • Met Application.Version kan met VBA de gebruikte Excel-versie worden uitgelezen. Indien gewenst kan hiermee specifieke VBA-code per versie gemaakt worden.
  • Maak in VBA gebruik van late binding. Hiermee worden gebruikte bibliotheken onafhankelijk van het versienummer van deze bibliotheek en kan daarmee voorkomen worden dat deze in oudere versies niet geladen kunnen worden.
  • Probeer VBA-code zoveel mogelijk versie-onafhankelijk te maken. Gebruik bijvoorbeeld Rows.Count in plaats van de laatste rij van een worksheet ‘hard’ te coderen (65536 voor Excel 2003 en 1048576 voor Excel 2007 en hoger).

32-bits versus 64-bits versie

Vanaf Excel-versie 2010 is er een 32-bits en een 64-bits versie van Excel beschikbaar. De 64-bits versie biedt verder geen extra functionaliteit ten opzichte van de 32-bits versie, maar de 64-bits versie is in staat om grotere geheugenbereiken te adresseren en kan sneller werken. In verreweg de meeste gevallen voldoet de 32-bits versie prima. Het grootste nadeel van het gebruik van de 64-bits versie is dat er comptabiliteitsproblemen kunnen ontstaan met eerdere versies. Dit speelt alleen als er gebruik wordt gemaakt van VBA/macro’s. Bijvoorbeeld niet alle (ActiveX-)controls van de 32-bits versie worden ondersteund in de 64-bits versie (bijvoorbeeld de TreeView, ListView, ImageList, Slider enz.). Daarnaast zullen er aanpassingen in de VBA-code moeten worden gemaakt in het geval er gebruik wordt gemaakt van zogenaamde API-calls.

Overzicht verschillen in functionaliteiten tussen Excel versies

In deze en de volgende paragraaf worden een aantal belangrijke verschillen in functionaliteiten tussen de diverse Excel-versies vermeld. Als basis voor het vergelijk is Excel versie 2003 genomen. Aangegeven wordt wat er in de 2007, 2010, 2013, 2016, 2019 en 365 versie veranderd is ten opzichte van de 2003-versie. Het gaat hierbij niet om de 64-bits versies en ook de versies voor de Mac, tablets en telefoons worden buiten beschouwing gelaten. Ook de verschillen tussen de verschillende servicepacks van de versies komen niet aan bod. Het overzicht is niet compleet en het is ook niet de intentie om een compleet overzicht te presenteren. Dat is vrijwel onmogelijk. De lijst zou dan zeer lang en erg gedetailleerd worden. Het gaat hier alleen om een aantal belangrijke verschillen.

Onderwerp 2007 2010 2013 2016 2019 2021 365¹)
Algemeen
1.048.576 rijen i.p.v. 65.536
16.384 kolommen i.p.v. 256
menubediening d.m.v. lint
bestandsextensie xlsx/xlsm/xlsb i.p.v xls
single document interface (SDI i.p.v MDI)
gegevens op meer dan 3 niveaus sorteren
tabel in plaats van lijst
tabel-slicers
sparklines
flashfill
dynamische matrixformules
Opmaak
16 miljoen kleuren i.p.v. 256
thema’s en stijlen
Voorwaardelijke opmaak
meer dan 3 voorwaarden
rechtstreeks kunnen verwijzen naar andere tabbladen
Draaitabellen
slicers
timeline-slicer
unieke waarden tellen (distinct count)
item-labels of veld-labels herhalen
Grafieken
box- & whisker
histogram
kaartgrafiek
pareto
trechtergrafiek
waterval
VBA²)
eigenschap CountLarge
eigenschap DisplayFormat
gebeurtenis Workbook_AfterSave
commando Application.FileSearch

¹) Of iets wel of niet beschikbaar is in Excel voor Office 365 is afhankelijk van het type abonnement.

²) Alle in een versie nieuw ingevoerde functionaliteiten hebben uiteraard ook gevolgen voor VBA, maar dat wordt hier buiten beschouwing gelaten.

Overzicht welke functie in welke versie beschikbaar is

Functie 2007 2010 2013 2016 2019 2021 365¹)
AANTALLEN.ALS
AGGREGAAT
ALS.FOUT
ALS.NB
ALS.VOORWAARDEN
ASELECT.MATRIX
BASIS
BIT.EN
BIT.EX.OF
BIT.OF
BLAD
BLADEN
DAGEN
DECIMAAL
EX.OF
FILTER
FORMULETEKST
GEMIDDELDE.ALS
GEMIDDELDEN.ALS
ISFORMULE
ISO.WEEKNUMMER
LAMBDA
LET
MAX.ALS.VOORWAARDEN
MIN.ALS.VOORWAARDEN
MODUS.ENKELV
MODUS.MEERV
NETWERKDAGEN.INTL
RANG.GELIJK
RANG.GEMIDDELDE
REEKS
SCHAKELEN
SOMMEN.ALS
SORTEREN
SORTEREN.OP
TEKST.COMBINEREN
UNIEK
WEBSERVICE
WERKDAG.INTL
X.VERGELIJKEN
X.ZOEKEN

¹) Of iets wel of niet beschikbaar is in Excel voor Office 365 is afhankelijk van het type abonnement.

Vragen / suggesties

Hopelijk heeft dit artikel geholpen om beter inzicht te krijgen in de compatibiliteit tussen Excel versies. Als er verdere vragen over dit onderwerp zijn of suggesties voor verbetering, plaats dan een reactie hieronder.

Reacties  
# William 06-01-2022 08:54
Ik heb een macro gemaakt die ik deel met een groep klanten. Bij de helft werkt hij naar behoren en de andere niet. Mijn vermoeden ligt bij het verschil in versies. Nu zijn er weinig forums waar ze daarop antwoorden geven. Kan u mij helpen?

Zie onderstaande macro:

Private Sub Workbook_Open()
Application.ScreenUpdating = False
Dim X As Worksheet
For Each X In Worksheets

If X.Name = "Sheet 2" Then

Else

X.Select

If X.Name = "Sheet 1" Then

Else

ActiveSheet.Unprotect ("456+")

If Range("A1").Value < Range("A2").Value Then

Range("E34").Locked = True

ElseIf Range("A1").Value >= Range("A2").Value Then

Range("E34").Locked = False

End If
End If
End If

ActiveSheet.Protect ("456+"), DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingRows:=True

Next X

Worksheets(1).Select

Application.ScreenUpdating = True

End Sub
Antwoorden
# Manfred van den Noort 06-01-2022 17:02
Dit is lastig te beoordelen zonder het bestand te zien.
Problemen bij het Workbook_Open event worden nog al eens veroorzaakt door timing issues. Vooral als bij het openen van het werkboek Excel eerst veel berekeningen moet uitvoeren (voorwaardelijke opmaak, UDF). Wat wel eens kan helpen is om de code, die overigens wel voor verbetering vatbaar is, van het Workbook_Open event in een aparte sub in een module te plaatsen. Bijv, sub Test.
Deze code moet je dan in het Workbook_Open event aanroepen met: Application.OnTime Now + TimeValue("00:00:01"), "Test"

Wellicht dat dit helpt.
Antwoorden
# William 07-01-2022 08:36
Dankje voor je antwoord. Ik ben me bewust dat dit niet de mooiste code is, maar het gaat mij erom dat het werkt. Je adviseert nu vooral hoe de performance beter kan, maar voor nu wil ik vooral weten waarom die bij de helft van mijn klanten niet werkt? Heb je daar ook ideeën over?
Antwoorden
# Manfred van den Noort 07-01-2022 09:48
Zoals ik je al aangaf worden dit soort problemen in z'n algemeenheid vaak veroorzaakt door timing issues. Dit kan per versie/systeem anders zijn. Vandaar mijn advies om de code op te nemen in een module en in het Workbook_Open event gebruik te maken van Application.OnTime.
Dat heeft dus niks te maken met performance verbetering.

Daarnaast gaf ik aan dat de code voor verbetering vatbaar is. Het belangrijkste advies hierbij is dat je Select van de sheets niet (of zo weinig mogelijk) moet gebruiken. Ook dat kan helpen de problemen op te lossen, maar dan zul je je code moeten aanpassen.
Antwoorden
# William 07-01-2022 10:01
Ik heb het geprobeerd en dat lijkt inderdaad beter te werken. Maar het probleem in versie verschil is nog niet getackeld.

Het beveiligen werkt per versie anders. Ik heb gegroepeerde rijen die ik wil openstellen voor de klant (dat zij gebruik kunnen maken van de + links). Als ik in de versie van de klant werk kan ik het blad niet zo beveiligen dat dit nog wel werkt. Weet jij of dit inderdaad in versies zoals 2016 en 2019 niet mogelijk is?
Antwoorden
# Manfred van den Noort 07-01-2022 13:06
Je wilt dus in- en uiklappen mogelijk maken op een beveiligde sheet. Zet dan voor de regel met .Protect de volgende regel: ActiveSheet.EnableOutlining = True
En bij .Protect moet vervolgens de parameter UserInterfaceOnly worden toegevoegd en op True worden gezet. In jouw geval wordt het dus:
ActiveSheet.EnableOutlining = True
ActiveSheet.Protect ("456+"), DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingRows:=True, UserInterfaceOnly:=True

Ik ga ervan uit dat het hiermee beter gaat.
Antwoorden
# William 13-01-2022 10:44
Het is gelukt op 1 klant na.
Bijzonder maar deze manier werkt goed.

dankje voor je reactie.
Antwoorden
# Rob 15-10-2021 16:04
Ik heb een groot Excel-bestand met allerlei macro's e.d., waarmee ik prima werkte op een 32 bits-PC. Sinds kort werk ik met Office 365 op een 64 bits-PC. Daarop blijkt dat Excel-bestand (de macro's) niet meer te werken. Is dat bestand 'om te zetten' o.i.d., zodat het bestand en de macro's weer werken op mijn 64 bits-PC?
Antwoorden
# Manfred van den Noort 15-10-2021 17:00
Normaal gesproken werkt een 32-bits macro ook in 64 bit. Er zijn een paar uitzonderingen, zoals:
1. Als er in de macro's gebruik wordt gemaakt van de windows API calls, dan moeten deze calls aangepast worden voor 64 bit.
En 2, als er in de VBA gebruik wordt gemaakt van extra bibliotheken of ActiveX-controls dan kan het zijn dat deze niet geschikt zijn voor 64 bit. Per geval zal dan moeten worden bekeken in hoeverre dit met alternatieven werkbaar gemaakt kan worden in 64 bit.
Antwoorden
arrow_up