Hallo !
Folgende Situation: Ich habe mehrere Pivottabellen von denen ich nun die Datenquelle ändern muss. Das klappt soweit auch ganz gut, allerdings hat die neue Datenquelle anders benannte Datenfelder, die sich nur durch "EUR" bzw. "USD" unterscheiden. Mein Ansatz ist daher, ich speichere mir die Datenfelder der alten Datenquelle, ändere die Datenquelle, und suche in der neuen Datenquelle nach den alten Datenfeldern jedoch mit "EUR" durch "USD" ersetzt, und füge sie der PivotTabelle wieder hinzu.
Die Methode 'AddDataField' für das Objekt 'PivotTable' ist fehlgeschlagen.
Private Sub btnUpdate_Click()
Dim pvtTmp As PivotTable
Dim pvtF As PivotField
Dim rng As Range
Dim dataFieldNames() As String
Dim dataFieldCaptions() As String
Set pvtTmp = wsPivotDiagram.PivotTables("Pivot_>60_Diagram_3")
Dim i As Integer
i = 0
For Each pvtF In pvtTmp.DataFields
If InStr(pvtF.SourceName, "EUR") > 0 Then
ReDim Preserve dataFieldNames(i)
ReDim Preserve dataFieldCaptions(i)
dataFieldNames(i) = pvtF.SourceName
dataFieldCaptions(i) = pvtF.Caption
i = i + 1
End If
Next pvtF
Set rng = wsDataUSD.Range("$A$1:$AE$58496")
With pvtTmp
.SourceData = rng.Address(True, True, xlR1C1, True)
'.RefreshTable
End With
For i = LBound(dataFieldNames) To UBound(dataFieldNames)
pvtTmp.AddDataField pvtTmp.PivotFields(Replace(dataFieldNames(i), "EUR", "USD")), Replace(dataFieldCaptions(i), "EUR", "USD"), xlSum
Next i
End Sub
Meiner Ansicht nach müsste das so funktionieren. Allerdings bekam ich gleich mal die Fehlermeldung:
"Laufzeitfehler '-2147417848 (80010108)'
Die Methode 'RefreshTable' für das Objekt 'PivotTable' ist fehlgeschlagen."
Da ich mir nicht erklären konnte warum das RefreshTable fehlschlagen sollte, habe ich es mal auskommentiert und erneut versucht.
Gleicher Laufzeitfehler nur mit:
Die Methode 'AddDataField' für das Objekt 'PivotTable' ist fehlgeschlagen.
Intensives googlen ergab nicht viel, ausser das dieser Fehler womöglich durch nicht vollständig Qualifizierte Methoden/Objekte verursacht werden könnte. Alleringds ist mMn bei mir alles vollständig Qualifiziert.
Vielleicht hat ja einer ne Idee?
MfG
Max
|