< návrat zpět

MS Excel


Téma: Aktualizace Konting.tabulky přes VBA rss

Zaslal/a 17.8.2016 13:44

€Ł мσşqμΐτσAhoj

už delší dobu se snažím vyřešit problém s aktualizací kontingenčních tabulek pomocí VBA.
Problém spočívá v tom, že po aktualizaci makrem, (viz níže) se v průřezu ztratí výběr jedné z tabulek.

Průřez před aktualizací:
img

Makro:
Dim oblt As Range
Dim pt As PivotTable
Dim oblast As String

Set oblt = Data.Range("A1").CurrentRegion
oblast = Data.Name & "!" & oblt.Address(ReferenceStyle:=xlR1C1)

For Each pt In Sheets("Tables").PivotTables
pt.ChangePivotCache ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=oblast)
pt.RefreshTable
Next pt
Set oblt = Nothing


Průřez po aktualizaci:
img

Ale až když aktualizuji manuálně (Nástroje kontingenční tabulky => Možnosti => Změnit zdroj dat = > Změnit zdroj dat…) obě tabulky, tak se v průřezu ukážou zase obě tabulky.

Za každou radu budu vděčný.

Děkuji

MS

Zaslat odpověď >

Strana:  1 2   další »
#032354
€Ł мσşqμΐτσ
Omlouvám se,

Průřez před aktualizaci a Průřez po aktualizaci viz příloha.
Příloha: zip32354_kt.zip (52kB, staženo 27x)
citovat
#032386
€Ł мσşqμΐτσ
Ahoj,
nikoho nenapadá jak aktualizovat makrem zdroj dat v kontingenční tabulkách, tak aby se v průřezech neztrácely tabulky? 7 7citovat
#032389
MePExG
for each ...
ActiveSheet.pt.PivotCache.Refresh
next
citovat
#032390
€Ł мσşqμΐτσ

mepexg napsal/a:

for each ...
ActiveSheet.pt.PivotCache.Refresh
next

@mepexg:
Děkuji za příspěvek, ale bohužel ani tohle nepomáhá. 7citovat
icon #032391
eLCHa
Opravte mně někdo, jestli něco tvrdím špatně. V pivotích keškách nejsem úplně zorientovaný, zatím jsem se bez nich obešel a vím jen co potřebuji.

Pokud máte více kontingenčních tabulek založených na stejné oblasti dat, mají společnou cache (kdysi jsem viděl návod, jak to udělat, aby neměly - už nevím kde - nepovažoval jsem za užitečné). Takže pokud aktualizujete PivotChache - stačí aktualizovat jedenkrát - není potřeba projíždět cyklem. Takže v tom případě stačí pouze totoactivesheet.pivottables(1).pivotcache.refresha mám aktualizované všechny kt založené na stejné oblasti jako pt(1). Stejný efekt má activesheet.pivottables(1).refreshtable - protože mají společnou cache, aktualizují se mi všechny.

Jakmile jsem přidal druhou tabulku, tak mi ten váš úvodní kód ani neproběhl - nemám čas zjišťovat proč (Error 5 - invalid call argument - nebo tak něco). Takže si ani nepotvrdím podezření, že si problém způsobujete použítím ChangePivotCache + Create

A ani se mi nepodařilo nasimulovat váš problém - neprojevilo se mi.

Takže problém může být pouze v sešitu - nejdříve si zkuste vytvořit (nic nekopírovat - maximálně data) nový a v něm otestujte, jestli to bude dělat i v novém souboru.

Mno a pokud to bude dělat i nadále, tak záznamník maker mi uložil totoActiveWorkbook.SlicerCaches("Průřez_Produkt").PivotTables.RemovePivotTable (ActiveSheet.PivotTables("Kontingenční tabulka 4"))Takže s pomocí SlicerCaches by jste měl být schopen si napsat nějakou procedurku, která bude připojené tabulky řídit (doplňovat či odebírat)citovat
#032394
avatar
Neuvedl jste verzi. U mne (2010) při manuální aktualizaci excel tvrdí, že pokud je připojen průřez, tak zdroj nezmění.

Pokud takto, tak je potřeba znovu kt průřezu připojit.

Druhá varianta - vytvořte tabulku nebo pojmenujte dynamickou oblast a uveďte je jako zdroj. Potom refresh stačí.citovat
#032395
€Ł мσşqμΐτσ
@Lubo: Verze 2010

@eLCHa:
Makro jsem přepsal, refresh jsem z cyklu vyndal, sešit znovu vytvořil viz příloha. Ale vše beze změn 7

Pruřez pred aktualizací vypínam
Příloha: zip32395_test.zip (215kB, staženo 23x)
citovat
icon #032396
eLCHa
Vypínáte pouze KT 1 a zapínáte pouze KT 2, takže tak (když to udělám "hloupě")

Sub PChartsRefresh()
Call VypnoutPrurez
Sheets("KT-G").PivotTables(1).RefreshTable
Call ZapnoutPrurez
End Sub

Sub VypnoutPrurez()
ActiveWorkbook.SlicerCaches("Průřez_Fakturace_Invoice").PivotTables.RemovePivotTable (ActiveSheet.PivotTables("Kontingenční tabulka 1"))
ActiveWorkbook.SlicerCaches("Průřez_Fakturace_Invoice").PivotTables.RemovePivotTable (ActiveSheet.PivotTables("Kontingenční tabulka 2"))
End Sub

Sub ZapnoutPrurez()
ActiveWorkbook.SlicerCaches("Průřez_Fakturace_Invoice").PivotTables.AddPivotTable (ActiveSheet.PivotTables("Kontingenční tabulka 1"))
ActiveWorkbook.SlicerCaches("Průřez_Fakturace_Invoice").PivotTables.AddPivotTable (ActiveSheet.PivotTables("Kontingenční tabulka 2"))
End Sub
citovat
#032397
€Ł мσşqμΐτσ
@eLCHa:
po odstranění .PivotCaches.Create... se teď neaktulizuje tabulka, pokud udělám zmenu v source datech. 4

Vypinání KT jsem udělal jenom narychlo, aby mi to nehazelo do chyby, ale to nemá vliv na aktualizaci. Alespoň si to myslím.citovat
icon #032398
eLCHa
Co myslíte změnou?
Změnou dat - mně to funguje
Změna oblasti - musíte pořešit nebo nejlépe převeďte na tabulku (Vložení - Tabulka) a starat se o to nemusítecitovat

Strana:  1 2   další »

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje