Excel 新图纸上的VBA透视表

Excel 新图纸上的VBA透视表,excel,charts,pivot-table,vba,Excel,Charts,Pivot Table,Vba,我录制了一个宏,用于在VBA中创建透视表和后续图表。它就像一个符咒,完全不是我所需要的。问题是,我希望能够运行代码并让它在一个不存在的工作表上创建一个表。基本上,我将从菜单上的按钮运行它,它将在新页面上创建表格和图表。没有进一步的告别: Sub Macro13() ' Macro13 Macro ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ "Main Budget

我录制了一个宏,用于在VBA中创建透视表和后续图表。它就像一个符咒,完全不是我所需要的。问题是,我希望能够运行代码并让它在一个不存在的工作表上创建一个表。基本上,我将从菜单上的按钮运行它,它将在新页面上创建表格和图表。没有进一步的告别:

Sub Macro13()

' Macro13 Macro



    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "Main Budget Sheet!R2C1:R88C10", Version:=xlPivotTableVersion14). _
        CreatePivotTable TableDestination:="Sheet21!R1C1", TableName:= _
        "PivotTable12", DefaultVersion:=xlPivotTableVersion14
    Sheets("Sheet21").Select
    Cells(1, 1).Select
    With ActiveSheet.PivotTables("PivotTable12").PivotFields("Category")
        .Orientation = xlRowField
        .Position = 1
    End With
    ActiveSheet.PivotTables("PivotTable12").AddDataField ActiveSheet.PivotTables( _
        "PivotTable12").PivotFields("Labor"), "Sum of Labor", xlSum
    ActiveSheet.PivotTables("PivotTable12").AddDataField ActiveSheet.PivotTables( _
        "PivotTable12").PivotFields("Material"), "Sum of Material", xlSum
    ActiveSheet.Shapes.AddChart.Select
End Sub
如果我把它译成通俗易懂的英语,我会认为它意味着。。。选择主预算表中的数据,然后在表21上创建一个名为pivot table 12的pivot表。。。然后选择工作表21并选择数据透视表的字段…最后,从该数据添加图表

我想我需要做的只是找出这些东西的通用名称(除了源数据)

而且,目前它只会运行一次,而且只有在该表已经存在的情况下运行,这可能是因为它无法生成一个名为同一事物的透视表,因此如果它可以在不同的表上重复创建同一个表,我可能会很高兴


正如你所看到的,我已经尝试了足够多,我已经创造了21张纸:/所以努力是存在的,但正如爱因斯坦对精神错乱的定义所说的,“精神错乱是尝试同样的事情,并期待不同的结果。”目前,我已经没有新的东西可以尝试了。

添加一张新的纸,然后使用该纸添加新的轴心,如下所示:

Sub AddPivotOnNewSheet()
Dim wsNew As Worksheet

Set wsNew = Sheets.Add

    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "Main Budget Sheet!R2C1:R88C10", Version:=xlPivotTableVersion14). _
        CreatePivotTable TableDestination:=wsNew.Name & "!R1C1", TableName:= _
        "PivotTableName", DefaultVersion:=xlPivotTableVersion14

    With ActiveSheet.PivotTables("PivotTableName").PivotFields("Category")
        .Orientation = xlRowField
        .Position = 1
    End With
    ActiveSheet.PivotTables("PivotTableName").AddDataField ActiveSheet.PivotTables( _
        "PivotTableName").PivotFields("Labor"), "Sum of Labor", xlSum
    ActiveSheet.PivotTables("PivotTableName").AddDataField ActiveSheet.PivotTables( _
        "PivotTableName").PivotFields("Material"), "Sum of Material", xlSum

    wsNew.Shapes.AddChart.Select
End Sub

添加新图纸,然后使用该图纸添加新轴,如下所示:

Sub AddPivotOnNewSheet()
Dim wsNew As Worksheet

Set wsNew = Sheets.Add

    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "Main Budget Sheet!R2C1:R88C10", Version:=xlPivotTableVersion14). _
        CreatePivotTable TableDestination:=wsNew.Name & "!R1C1", TableName:= _
        "PivotTableName", DefaultVersion:=xlPivotTableVersion14

    With ActiveSheet.PivotTables("PivotTableName").PivotFields("Category")
        .Orientation = xlRowField
        .Position = 1
    End With
    ActiveSheet.PivotTables("PivotTableName").AddDataField ActiveSheet.PivotTables( _
        "PivotTableName").PivotFields("Labor"), "Sum of Labor", xlSum
    ActiveSheet.PivotTables("PivotTableName").AddDataField ActiveSheet.PivotTables( _
        "PivotTableName").PivotFields("Material"), "Sum of Material", xlSum

    wsNew.Shapes.AddChart.Select
End Sub

我确实试过了,虽然它确实创建了一个新表,但表并没有在其中结束。我确实试过了,虽然它确实创建了一个新表,但表并没有在其中结束。哦,我的天哪,我花了4个小时试图弄明白这一点,而你就这样来解决它。非常感谢你。你太棒了。最后一件事,抱歉,“数据透视表名称”是一种通用形式,它可以使您不需要特定的名称,或者您可以在其中添加任何内容?@NicholasBrandon您可以使用任何您想要的数据透视表名称哦,天哪,我花了4个小时试图弄明白这件事,你就这样过来解决它。非常感谢你。你太棒了。最后一件事,很抱歉,“PivotTableName”是一种通用形式,它使您不需要特定的名称,或者您可以在其中添加任何内容吗?@NicholasBrandon您可以使用任何您想要的名称,以确保pivot表的成功运行。。享受吧,伙计们:)它跑得很成功。。喜欢男人:)