Deze zelfstudie laat zien hoe u een draaitabel of alle draaitabellen kunt vernieuwen met VBA.
Draaitabellen zijn een uitzonderlijk krachtig gegevenshulpmiddel van Excel. Met draaitabellen kunnen we grote hoeveelheden gegevens analyseren en interpreteren door velden en rijen te groeperen en samen te vatten.
Wanneer we een draaitabel maken, worden de gegevens opgeslagen in een zogenaamde draaitabelcache. De gegevens worden daarom opgeslagen in het cachegeheugen van de pc, wat de draaitabel versnelt.
Als de gegevensbron van de draaitabel wordt bijgewerkt, wordt de draaitabel zelf niet bijgewerkt. De gebruiker in Excel moet klikken op de Ververs alles op het tabblad Gegevens op het lint om de brongegevens van de draaitabel te vernieuwen.
Als alternatief kunnen we macro's in VBA schrijven die de gegevens voor ons bijwerken!
Alle gegevensverbindingen vernieuwen
De meest eenvoudige methode om de gegevens te vernieuwen, is door VBA te gebruiken om na te bootsen wat de Ververs alles knop doet op het lint.
123 | Sub RefreshVerbindingen()ActiveWorkbook.RefreshAllEinde sub |
Met deze methode worden alle verbindingen met alle gegevens in de werkmap die u actief hebt vernieuwd. Het vernieuwt ook niet alleen een enkele draaitabel, maar ververst ook meerdere draaitabellen als u er meer dan één hebt aangesloten op verschillende gegevenssets.
Alle draaitabellen vernieuwen
Om alleen de draaitabellen in onze werkmap te vernieuwen, maar andere gegevensverbindingen uit te sluiten, kunnen we een methode gebruiken met de naam RefreshTable.
Als we meerdere draaitabellen in onze werkmap hebben, moeten we alle draaitabellen doorlopen om ze allemaal te vernieuwen. Om dit te doen, declareren we eerst een draaitabelvariabele en maken vervolgens een For Each-lus om alle draaitabellen in de actieve werkmap te doorlopen.
123456 | Sub RefreshPivotsOnly()Dim tblPivot As PivotTableVoor elke tblPivot in ActiveWorkbook.PivotTablestblPivot.RefreshTableVolgende tblPivotEinde sub |
We kunnen een vergelijkbare macro gebruiken om de draaitabellen in onze Actief blad in plaats van het hele werkboek. We zouden dan door de draaitabellen in de ActiveSheet liever dan de ActiefWerkboek.
123456 | Sub RefreshActiveSheetPivotsOnly()Dim tblPivot As PivotTableVoor elke tblPivot in ActiveSheet.PivotTablestblPivot.RefreshTableVolgende tblPivotEinde sub |
Deze macro zou het handigst zijn als we er gemakkelijk toegang toe hadden op onze ActiveSheet. Om dit te doen, kunnen we een knop op het blad maken om de macro uit te voeren.
Een draaitabel vernieuwen
Als we alleen de draaitabel waaraan we werken willen vernieuwen en niet alle andere draaitabellen in de werkmap, moeten we de specifieke draaitabel identificeren. Dit is natuurlijk zolang je de naam van de draaitabel weet - in dit geval Draaitabel1.
123 | Sub RefreshOneTableActiveSheet.PivotTables("PivotTable1").RefreshTableEinde sub |
De draaitabelcache vernieuwen
Als we meerdere draaitabellen in onze werkmap hebben, maar ze gebruiken allemaal dezelfde gegevens, kunnen we de draaitabelcache vernieuwen in plaats van de eigenlijke draaitabel te vernieuwen. Als u de cache ververst, worden vervolgens automatisch alle draaitabellen vernieuwd die gebruikmaken van de gegevens in de cache.
123456 | Sub RefreshCache()Dim chPivot As PivotCacheVoor elke chPivot in ActiveWorkbook.PivotCacheschPivot.RefreshVolgende chPivotEinde sub |