用于插入数据透视表的宏

Macro to insert Pivot Table

提问人:Cinn C 提问时间:11/5/2023 最后编辑:braXCinn C 更新时间:11/6/2023 访问量:56

问:

我正在尝试使用宏来创建数据透视表。我已经使用了记录宏并按照步骤操作,但是我遇到了错误,并且不太精通VBA。它一直挂在以下最后一行......不知道为什么...谁能帮忙?

Sheets.Add.Name = "Inventory Summary"
Worksheets("Inventory Summary").Move _
    after:=Worksheets("Info")
Sheets("Inventory").Select
Application.CutCopyMode = False
Application.CutCopyMode = False
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
    "Table2", Version:=8).CreatePivotTable TableDestination:= _
    "Inventory Summary!R2C1", TableName:="PivotTable1", DefaultVersion:=8

我已经在宏中记录了这一步,它工作正常。我将其添加到一个更大的宏(多个“步骤”)中。当我运行完整的宏时,我收到一个错误进行调试,它把我带到了上面提到的点。但我看不出有什么问题......

Excel VBA 数据透视表

评论

0赞 CDP1802 11/5/2023
名称:=“数据透视表 1”您是否有具有此名称的现有数据透视表?
0赞 taller 11/5/2023
错误编号和文本是什么?

答:

1赞 Tim Williams 11/6/2023 #1

拆分创建数据透视缓存和数据透视表的两个命令(并使用一些变量)通常更简洁:

Sub Tester()

    Dim wb As Workbook, ws As Worksheet, pc As PivotCache, pt As PivotTable
    
    Set wb = ThisWorkbook 'or eg ActiveWorkbook
    Set ws = wb.Worksheets.Add(after:=wb.Worksheets("Info"))
    ws.Name = "Inventory Summary"
    
    Set pc = wb.PivotCaches.Create(SourceType:=xlDatabase, _
                          SourceData:="Table2", Version:=8)
                          
    Set pt = pc.CreatePivotTable(TableDestination:=ws.Range("A2"), _
                   TableName:="PivotTable1", DefaultVersion:=8)

End Sub

如果这仍然不起作用,那么您需要确切地告诉我们您遇到的错误。

评论

0赞 Cinn C 11/7/2023
这解决了---有没有办法更改数据透视表选项>显示>经典数据透视表网格......并防止字段“植物”的小计
0赞 Tim Williams 11/8/2023
您可以在对数据透视表进行更改时录制宏 - 它将为您提供所需的行,您可以将这些行添加到您的代码中。stackoverflow.com/questions/24170895/......涵盖小计。
0赞 Cinn C 11/8/2023
我确实试过了......但它并没有像预期的那样改变 - 实际上看起来是一样的 谢谢 - 我会继续寻找......