Aktualisierung von Verknüpfungen von PivotTables m
08.11.2006 14:24:35
Verknüpfungen
folgende Problemstellung:
- Die Master-PivotTable bezieht sich auf Access-Datenbank
(ca. 1 Mio. Zeilen)
- alle anderen PivotTables des Dokumentes sind mit dem Master PivotTable
verknüpft (aus Platz- und Aktualisierungsgründen)
- sobald die Access-Datenbank um eine Spalte erweitert wird (oder ein
Spaltenname verändert wird) gehen die Verknüpfungen verloren
- diese Verknüpfungen müssen für jedes PivotTable manuell mit 7 immer den
selben Schritten neu erstellt werden
- einige Tabellenblätter enthalten mehrere PivotTables
(d.h. die zu aktualisierenden PivotTables sind nicht immer an der
gleichen Stelle in den Tabellenblättern)
- die Datei enthält ca. 100 Tabellenblätter
Ich habe hierbei schon eine sher gute Hilfestellung im Forum bekommen.
(Vielen Dank an Hansueli!!!) Die Lösung funktioniert auch hervorragend.
Allerdings nur wenn die Rohdaten auf die die Masterpivottabelle zugreift
in Excel vorliegen. Sind die Rohdaten wie in meinem Fall in einer Access-Datei
gespeichert, dann kommt es zu einem Laufzeitfehler '13' (Typen unverträglich)
und zwar beim Statement tMasterSource = pt.SourceData (siehe Makro).
Anbei das Makro (programmiert von hansueli, danke nochmal!):
Sub ChildPivotAktualisieren()
Dim ws As Worksheet
Dim pt As PivotTable
Dim tMasterName, tMasterSource As String
' Find first MasterPivot Table and its Sourcedata
tMasterName = "PivotTable1" ' Namen anpassen !!!
For Each ws In ActiveWorkbook.Worksheets
For Each pt In ws.PivotTables
If pt.Name = tMasterName Then
tMasterSource = pt.SourceData
Exit For
End If
Next
If tMasterSource <> "" Then Exit For
Next
' Replace all Child-Pivot's Sourcedata
If tMasterSource <> "" Then
For Each ws In ActiveWorkbook.Worksheets
For Each pt In ws.PivotTables
If pt.Name <> tMasterName Then
pt.SourceData = tMasterSource
iPTCnt = iPTCnt + 1
End If
Next
Next
MsgBox iPTCnt & " pivot table(s) adjusted to " & tMasterSource, vbOKOnly + vbInformation
Else
MsgBox "NO SOURCEDATA FOUND from pivot table <" & tMasterName & ">", vbOKOnly + vbCritical
End If
End Sub
Für einen Hinweis wäre ich sehr dankbar!
Viele Grüße,
Dirk