Excelbat
Gebruiker
- Lid geworden
- 23 mrt 2012
- Berichten
- 402
Hi there,
Ben al een hele tijd bezig geweest om te voorkomen dat bij het vernieuwen van één draaitabel, de andere draaitabellen tegelijkertijd ook verversen. Na veel gezoek en geprobeer heb ik dit gevonden, en dit zou misschien anderen ook kunnen helpen:
Als je brongegevens in A1:E5 staan, dan moeten er nieuwe naambereiken aangemaakt worden met één rij extra: dus A1:E6 (zie eerste macro hieronder):
Met deze codes kan je verschillende caches terugzetten naar één cache. Dus hier werken we precies tegenovergesteld aan wat we hierboven hebben gedaan:
Bekijk bijlage PivotDraaiTabelCacheLoskoppelenBereikRenameHernoemenEnCacheWeerVastkoppelen.xlsb
Ik hoop dat iemand hier gebruik van kan maken, want ik heb mezelf een slag in de rondte op google gezocht om uit te vinden hoe dit voor elkaar te krijgen,
Greetz/Excelbat
Ben al een hele tijd bezig geweest om te voorkomen dat bij het vernieuwen van één draaitabel, de andere draaitabellen tegelijkertijd ook verversen. Na veel gezoek en geprobeer heb ik dit gevonden, en dit zou misschien anderen ook kunnen helpen:
Als je brongegevens in A1:E5 staan, dan moeten er nieuwe naambereiken aangemaakt worden met één rij extra: dus A1:E6 (zie eerste macro hieronder):
Code:
Sub EersteUitTeVoeren() 'Naambereiken aanmaken
With ActiveWorkbook
.Names.Add Name:="NaamEen", RefersTo:="=Tabelle1!$A$1:$E$6"
.Names.Add Name:="NaamTwee", RefersTo:="=Tabelle1!$A$1:$E$6"
.Names.Add Name:="NaamDrie", RefersTo:="=Tabelle1!$A$1:$E$6"
End With
End Sub
Code:
Sub TweedeUitTeVoeren() 'Verschillende caches aanmaken
With ActiveSheet
.PivotTables("PivotEen").ChangePivotCache ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:="NaamEen", Version:=xlPivotTableVersion14)
.PivotTables("PivotTwee").ChangePivotCache ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:="NaamTwee", Version:=xlPivotTableVersion14)
.PivotTables("PivotDrie").ChangePivotCache ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:="NaamDrie", Version:=xlPivotTableVersion14)
End With
End Sub
Code:
Sub DerdeUitTeVoeren() 'Naambereiken terugzetten naar de oorspronkelijke tabel
With ActiveWorkbook
.Names("NaamEen").RefersToR1C1 = "=RawTabel[#All]"
.Names("NaamTwee").RefersToR1C1 = "=RawTabel[#All]"
.Names("NaamDrie").RefersToR1C1 = "=RawTabel[#All]"
End With
End Sub
Code:
Sub PivotStukVoorStukRefreshen() 'Welke pivot gaan we refreshen
With Sheets("Tabelle1")
.PivotTables("PivotDrie").PivotCache.Refresh
.PivotTables("PivotTwee").PivotCache.Refresh
.PivotTables("PivotEen").PivotCache.Refresh
End With
End Sub
Met deze codes kan je verschillende caches terugzetten naar één cache. Dus hier werken we precies tegenovergesteld aan wat we hierboven hebben gedaan:
Code:
Sub MeerCacheNaarEen() 'Alle pivots in het hele werkboek koppelen aan zelfde cache
Dim Pt As PivotTable
Dim wks As Worksheet
For Each wks In ActiveWorkbook.Worksheets
For Each Pt In wks.PivotTables
Pt.CacheIndex = Sheets("Tabelle1").PivotTables("PivotEen").CacheIndex
Next Pt
Next wks
End Sub
Code:
Sub MeerCacheToOne() 'Een bepaalde pivot koppelen aan een zekere cache
Sheets("Tabelle1").PivotTables("PivotTwee").CacheIndex = Sheets("Tabelle1").PivotTables("PivotEen").CacheIndex
Sheets("Tabelle1").PivotTables("PivotDrie").CacheIndex = Sheets("Tabelle1").PivotTables("PivotEen").CacheIndex
End Sub
Code:
Sub MeerCacheToOneDavid() 'Een bepaalde pivot koppelen aan een zekere cache
For Each PivotTable In Sheets("Tabelle1").PivotTables
PivotTable.CacheIndex = Sheets("Tabelle1").PivotTables("PivotEen").CacheIndex
Next PivotTable
End Sub
Code:
Sub NamenTerugzetten() 'Namen terugzetten David VOORZICHTIG: ALLE NAMEN (DUS OOK MET ANDERE BEREIKEN) WORDEN HIER AAN ÉÉN TABEL GEKOPPELD
For Each Name In ActiveWorkbook.Names
Name.RefersToR1C1 = "=RawTabel[#All]"
Next Name
End Sub
Bekijk bijlage PivotDraaiTabelCacheLoskoppelenBereikRenameHernoemenEnCacheWeerVastkoppelen.xlsb
Ik hoop dat iemand hier gebruik van kan maken, want ik heb mezelf een slag in de rondte op google gezocht om uit te vinden hoe dit voor elkaar te krijgen,
Greetz/Excelbat