创建数据透视表时出错

时间:2016-08-19 08:12:37

标签: excel vba excel-vba pivot-table

我在创建数据透视表时已经调试了这段代码数小时,但不幸的是,我无法找出问题所在。它会一直显示Object doesn't support this property or method.

Sub CreatePivotTable()

Dim sht, srcSheet As Worksheet, ccsheet As Worksheet
Dim pvtCache As PivotCache
Dim pvt As PivotTable
Dim StartPvt As String
Dim SrcData As String
Dim lrow As Long
Set srcSheet = ThisWorkbook.Sheets("Document Raw")
lrow = srcSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
Set ccsheet = ThisWorkbook.Sheets("Character Count")

SrcData = srcSheet & "!" & Range("A1:V"& lrow).Address(ReferenceStyle:=xlR1C1)' this is the line that errors

StartPvt = ccsheet & "!" & ccsheet.Range("A79").Address(ReferenceStyle:=xlR1C1)

Set pvtCache = ActiveWorkbook.PivotCaches.Create( _
SourceType:=xlDatabase, _
SourceData:=SrcData)

Set pvt = pvtCache.CreatePivotTable( _
TableDestination:=StartPvt, _
TableName:="PivotTable1")

End Sub

有任何帮助吗?感谢

1 个答案:

答案 0 :(得分:0)

尝试下面的修改后的代码(我更喜欢设置Range,稍后设置PivotCachePivotTable以及此方法):

Sub CreatePivotTable()

Dim srcSheet                As Worksheet
Dim ccSheet                 As Worksheet
Dim pvtCache                As PivotCache
Dim pvtTbl                  As PivotTable
Dim StartPvt                As Range
Dim SrcData                 As Variant
Dim lrow                    As Long

Set srcSheet = ThisWorkbook.Sheets("Document Raw")
lrow = srcSheet.Cells(srcSheet.Rows.Count, 1).End(xlUp).Row
Set ccSheet = ThisWorkbook.Sheets("Character Count")

' make sure you have valid data from Column A to Column V
Set SrcData = srcSheet.Range("A1:V" & lrow)
Set StartPvt = ccSheet.Range("A79")

'Create Pivot table from Pivot Cache
Set pvtCache = ActiveWorkbook.PivotCaches.Add(xlDatabase, SrcData)


' add this line in case the Pivot table doesn't exit >> first time running this Macro
On Error Resume Next
Set pvtTbl = ccSheet.PivotTables("PivotTable1") ' check if "PivotTable1" Pivot Table already created (in past runs of this Macro)

On Error GoTo 0
If pvtTbl Is Nothing Then
    Set pvtTbl = ccSheet.PivotTables.Add(PivotCache:=pvtCache, TableDestination:=StartPvt, TableName:="PivotTable1")
Else
    pvtTbl.ChangePivotCache pvtCache
    pvtTbl.RefreshTable
End If

End Sub
相关问题