Hallo Katrin,
dein Code gibt leider keine Auskunft darüber, auf welchem Tabellenblatt und in welcher Arbeitsmappe sich die Pivottabelle befindet. Du kopierst lediglich die Basisdaten von einer Datei in die andere. Auf Basis dieses Tabellenblatts hast du dann die Pivot gebildet. Nehmen wir an die liegt auf dem Tabellenblatt "Pivot1" Dann kannst du mit folgender Zeile den Quellbereich ermitteln: MsgBox Worksheets("Pivot1").PivotTables(1).SourceData
Leider wird dieser im Z1S1-Format zurückgegeben. Glücklicherweise kannst du ihn aber auch in diesem Format neu setzen. Führe dazu einfach diesen Code aus.
Sub Letzte_Pivotzeile_ermitteln_und_neu_setzen()
Bereich = Worksheets("Pivot1").PivotTables(1).SourceData
p = InStr(1, Bereich, "!")
If p > 0 Then ws = Left(Bereich, p - 1) Else ws = "Pivot1"
s = Val(Mid(Bereich, InStr(p + 1, Bereich, "S") + 1, InStr(p + 1, Bereich, ":") - InStr(p + 1, Bereich, "S") - 1))
lastrow = Worksheets(ws).Cells(Rows.Count, s).End(xlUp).Row
BereichNeu = Left(Bereich, InStr(p + 1, Bereich, ":") + 1) & lastrow & Right(Bereich, Len(Bereich) - InStrRev(Bereich, "S") + 1)
Worksheets("Pivot1").PivotTables(1).SourceData = BereichNeu
Worksheets("Pivot1").PivotTables(1).RefreshTable
End Sub
Das Beispiel geht davon aus, dass sich Pivottabelle und Basisdaten in der gleichen Arbeitsmappe befinden.
Gruß Mr. K.
|