运行时错误1004无法获得工作表类的可透视属性

发布于 2025-02-03 17:33:59 字数 987 浏览 3 评论 0 原文

我正在使用宏来创建一个枢轴表,并且正在遇到运行时错误1004,而不知道为什么。所有的帮助将不胜感激

ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
    "CTQ_Weekly_Attendance!R1C1:R1000C12", Version:=xlPivotTableVersion12). _
    CreatePivotTable TableDestination:="", TableName:="PivotTable2", DefaultVersion:=xlPivotTableVersion12
Sheets("By_Title_&_Level").Activate
Cells(1, 1).Select
With ActiveSheet.PivotTables("PivotTable2").PivotFields("Title")
    .Orientation = xlRowField
    .Position = 1
End With
With ActiveSheet.PivotTables("PivotTable2").PivotFields("Level_")
    .Orientation = xlRowField
    .Position = 2
End With
ActiveSheet.PivotTables("PivotTable2").AddDataField ActiveSheet.PivotTables( _
    "PivotTable2").PivotFields("Picked_Up"), "Sum of Picked_Up", xlSum
ActiveSheet.PivotTables("PivotTable2").AddDataField ActiveSheet.PivotTables( _
    "PivotTable2").PivotFields("Attended"), "Sum of Attended", xlSum
ActiveWorkbook.ShowPivotTableFieldList = True

I am using a Macro to create a pivot table and am running into the Runtime Error 1004, and no idea why. Any and all help would be appreciated

ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
    "CTQ_Weekly_Attendance!R1C1:R1000C12", Version:=xlPivotTableVersion12). _
    CreatePivotTable TableDestination:="", TableName:="PivotTable2", DefaultVersion:=xlPivotTableVersion12
Sheets("By_Title_&_Level").Activate
Cells(1, 1).Select
With ActiveSheet.PivotTables("PivotTable2").PivotFields("Title")
    .Orientation = xlRowField
    .Position = 1
End With
With ActiveSheet.PivotTables("PivotTable2").PivotFields("Level_")
    .Orientation = xlRowField
    .Position = 2
End With
ActiveSheet.PivotTables("PivotTable2").AddDataField ActiveSheet.PivotTables( _
    "PivotTable2").PivotFields("Picked_Up"), "Sum of Picked_Up", xlSum
ActiveSheet.PivotTables("PivotTable2").AddDataField ActiveSheet.PivotTables( _
    "PivotTable2").PivotFields("Attended"), "Sum of Attended", xlSum
ActiveWorkbook.ShowPivotTableFieldList = True

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

ヅ她的身影、若隐若现 2025-02-10 17:34:02

在枢轴表方面,宏记录器不是很好 - 您通常希望将枢轴缓存和枢轴表创建分为单独的步骤,并且您的代码将始终从使用几个变量中受益:

Sub Pivot()

    Dim wb As Workbook, pc As PivotCache, pt As PivotTable
    Dim wsData As Worksheet, wsPivot As Worksheet
    
    Set wb = ActiveWorkbook
    Set wsPivot = wb.Worksheets("By_Title_&_Level")
    Set wsData = wb.Worksheets("CTQ_Weekly_Attendance")
    
    Set pc = wb.PivotCaches.Create(SourceType:=xlDatabase, _
                              SourceData:=wsData.Range("A1:L1000"), _
                              Version:=xlPivotTableVersion12)
              
    Set pt = pc.CreatePivotTable(TableDestination:=wsPivot.Range("B3"), _
                                 TableName:="PivotTable2", _
                                 DefaultVersion:=xlPivotTableVersion12)

    With pt.PivotFields("Title")
        .Orientation = xlRowField
        .Position = 1
    End With
    
    With pt.PivotFields("Level_")
        .Orientation = xlRowField
        .Position = 2
    End With
    
    pt.AddDataField pt.PivotFields("Picked_Up"), "Sum of Picked_Up", xlSum
    pt.AddDataField pt.PivotFields("Attended"), "Sum of Attended", xlSum
    wb.ShowPivotTableFieldList = True

End Sub

The macro recorder is not great when it comes to pivot tables - you typically want to split up the pivot cache and pivot table creation into separate steps, and your code will always benefit from the use of a few variables:

Sub Pivot()

    Dim wb As Workbook, pc As PivotCache, pt As PivotTable
    Dim wsData As Worksheet, wsPivot As Worksheet
    
    Set wb = ActiveWorkbook
    Set wsPivot = wb.Worksheets("By_Title_&_Level")
    Set wsData = wb.Worksheets("CTQ_Weekly_Attendance")
    
    Set pc = wb.PivotCaches.Create(SourceType:=xlDatabase, _
                              SourceData:=wsData.Range("A1:L1000"), _
                              Version:=xlPivotTableVersion12)
              
    Set pt = pc.CreatePivotTable(TableDestination:=wsPivot.Range("B3"), _
                                 TableName:="PivotTable2", _
                                 DefaultVersion:=xlPivotTableVersion12)

    With pt.PivotFields("Title")
        .Orientation = xlRowField
        .Position = 1
    End With
    
    With pt.PivotFields("Level_")
        .Orientation = xlRowField
        .Position = 2
    End With
    
    pt.AddDataField pt.PivotFields("Picked_Up"), "Sum of Picked_Up", xlSum
    pt.AddDataField pt.PivotFields("Attended"), "Sum of Attended", xlSum
    wb.ShowPivotTableFieldList = True

End Sub
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文