Heute morgen hatte ich die Idee, zum Zwecke schlanker Dateigrößen, im seltenen Fall mehrerer PivotTabellen in einer Datei, alle über VBA zwangsweise auf den gleichen PivotCache basieren zu lassen. Eine grobe Idee wie das geht hatte ich schon, aber testete es auch einmal direkt über Clicks in Excel und ließ den Makrorekorder mitlaufen.
Dieser ergab u.a. folgende Zeile: ActiveSheet.PivotTableWizard SourceType:=xlPivotTable, SourceData:="PivotTable1"
Die Pivots die gelooped werden müssen habe ich zuvor schon ein einer Collection gesammelt. Die erste Pivot der Collection ist die Referenz für den, von allen anderen Pivots (2 to n), zu verwendenden PivotCache. Gibt es eine Möglichkeit, die Referenz ActiveSheet.PivotTableWizard zu umgehen? Die Pivots liegen ja bereits in einer Collection vor und irgendwie scheue ich mich auf das übergeordnete Element (Worksheet) zu gehen, wenn ich doch an der Pivot direkt einen Eingriff vornehmen möchte?! Das erinnert mich an die Verwendung von Select Und was wäre, wenn zwei Pivots auf einem Worksheet liegen? Dann ist ActiveSheet.PivotTableWizard doch auch zu ungenau?! Was mir vorschwebt ist eher folgender Ansatz:
For b = 2 to o.count
Set pt = o(b)
With pt
.SourceType:=xlPivotTable
.SourceData:="PivotTable1"
End with
Next b
Ich habe hierzu schon einige Versuche unternommen und im Netz recherchiert, aber entweder bekam ich einen Debugger oder aber die Ansatäze die ich fand entielten alle ebenso ActiveSheet.PivotTableWizard.
Weiß ein Forumsteilnehmer Rat, wie ich die Pivot direkt mit dem Cache einer anderen aktuslieren kann? Ich würde mich sehr freuen, wenn jemand etwas Zeit findet, seine Erfahrung und Expertise zu teilen. Eine aufgeräumte Beispieldatei anbei: https://www.herber.de/bbs/user/130958.xlsm
Vielen Dank Euch im Voraus!
Beste Grüße, Andreas Hanisch