Я думаю, этот код будет делать то, что вы хотите.По сути, он удаляет существующую таблицу перед вставкой новой.
Private Sub RenewPivotTable()
Dim DSheet As Worksheet
Dim PTable As PivotTable
Dim LastRow As Long, LastCol As Long
Dim PRange As Range
Dim Table1_Start_Line As Long, Column_line As Long
Set DSheet = ActiveWorkbook.Worksheets("Sheet1")
With DSheet
If .PivotTables.Count Then
.PivotTables(1).TableRange2.Clear
End If
LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
LastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
Set PRange = .Cells(1, 1).Resize(LastRow, LastCol)
End With
Table1_Start_Line = 2
Column_line = LastCol + 2
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, _
SourceData:=PRange, _
Version:=xlPivotTableVersion15).CreatePivotTable _
TableDestination:=DSheet.Cells(Table1_Start_Line, Column_line), _
TableName:="PivotTable", _
DefaultVersion:=xlPivotTableVersion15
End Sub
Я тестировал ее версию 14 в Excel 2010