Private Sub CommandButton1_Click()
tsb_sourcesheetname = "sheet1"
tsb_tablename = "工程量透视表"
tsb_sheetname = "数据统计"
tsb_headname = "灯具全名称"
tsb_sum = "数量"
'
'删除全部的透视表
'---------------------------------------------
Dim oPT As PivotTable
With Sheets(tsb_sheetname)
For Each oPT In .PivotTables
With oPT
.TableRange2.Delete
End With
Next
End With
'---------------------------------------------
'直接赋值给透视表名称,直接删除
' Sheets(tsb_sheetname).PivotTables(tsb_tablename).TableRange2.Delete
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
tsb_sourcesheetname & "!R2C8:R108C9", Version:=6).CreatePivotTable TableDestination:= _
tsb_sheetname & "!R3C1", TableName:=tsb_tablename, DefaultVersion:=6
Sheets(tsb_sheetname).Select
Sheets(tsb_sheetname).Cells(3, 1).Select
Sheets(tsb_sheetname).PivotTables(tsb_tablename).CompactLayoutRowHeader = tsb_headname
With ActiveSheet.PivotTables(tsb_tablename).PivotFields(tsb_headname)
.Orientation = xlRowField
.Position = 1
.PivotItems("").Visible = False
End With
With ActiveSheet.PivotTables(tsb_tablename).PivotFields(tsb_sum)
.Orientation = xlRowField
.Position = 2
End With
ActiveSheet.PivotTables(tsb_tablename).AddDataField ActiveSheet.PivotTables(tsb_tablename _
).PivotFields(tsb_sum), "求和项:数量", xlSum
ActiveSheet.PivotTables(tsb_tablename).PivotFields("求和项:数量").Caption = "总计"
ActiveSheet.PivotTables(tsb_tablename).PivotSelect tsb_headname & "[All]", xlLabelOnly + _
xlFirstRow, True
ActiveSheet.PivotTables(tsb_tablename).PivotCache.Refresh
End Sub