【问题标题】:Creating pivot table using vba - run time error使用 vba 创建数据透视表 - 运行时错误
【发布时间】:2016-07-12 22:55:32
【问题描述】:

我正在尝试使用 vba 创建数据透视表。以下是我尝试过的代码:

Sub CreatePivot()

    Dim objTable As PivotTable
    Dim objField As PivotField
    Dim ws As Worksheet

    Set ws = Worksheets.Add
    Sheets(ws.Name).Name = "Write-Off Pivot"

    ' Select the sheet and first cell of the table that contains the data.
    ActiveWorkbook.Sheets("GEP Write-Offs Rawdata").Select
    Range("A1").Select

    Set objTable = ws.PivotTableWizard

    ' Specify row and column fields.
    Set objField = objTable.PivotFields("MPG")
    objField.Orientation = xlRowField

    ' Specify a data field with its summary
    ' function and format.
    Set objField = objTable.PivotFields("'A_780610 - Inventory - Obsolescence")
    objField.Orientation = xlDataField
    objField.Function = xlSum
    objField.NumberFormat = "$ #,##0"


End Sub

我收到此错误消息。 “运行时错误‘104’” “对象'_worksheet'的方法'数据透视表'失败”

问题似乎出在这一行,但无法弄清楚是什么原因造成的。

Set objTable = ws.PivotTableWizard

【问题讨论】:

  • 您似乎遗漏了一些论据。查看正式文档,看看它是否能让你更接近:msdn.microsoft.com/en-us/library/office/ff839228.aspx
  • @Yuvaraj 在使用 Excel 2016 对测试数据进行验证后,我已经提交了我的答案,并渴望得到像您这样的活跃成员的反馈。这当然不是为了回答问题,而是为了增强我们的学习体验,因为这是一个永无止境的过程。
  • 感谢您的迅速行动。谢谢

标签: excel pivot vba


【解决方案1】:

您的下一行需要更改。

Set objTable = ws.PivotTableWizard   

这应该指向数据源表。所以它应该是。

Set objTable = Sheets("GEP Write-Offs Rawdata").PivotTableWizard   

它将创建数据透视表并在您的命令后写入新添加的工作表

Set ws = Worksheets.Add
    Sheets(ws.Name).Name = "Write-Off Pivot"

未链接,请适当修改。

这是@Rory 建议的补充。

【讨论】:

  • @Rory 我鼓起勇气征求您对我建议的关于 Set objTable 的更改的看法。由于我在 excel-vba 中处于初学者水平并且渴望学习,如果这是不相关或错误的,我会毫不犹豫地撤回我的答案。
【解决方案2】:

您需要使用使用ActiveSheet.Pivottablewizard 而不是ws.PivotTableWizard,因为ws 工作表上没有任何数据。

顺便说一句,这是不必要的复杂:

Sheets(ws.Name).Name = "Write-Off Pivot"

你只需要:

ws.Name = "Write-Off Pivot"

【讨论】:

    【解决方案3】:

    PivotTableWizard 方法需要一些参数:

    像这样:

     Set objTable = ws.PivotTableWizard(xlDatabase, ActiveWorkbook.Worksheets("Table8").Range("A1:A5"), ws.Range("A1:A6"))
    

    有很多参数,对于您的示例,我需要数据源类型、数据源和数据目标。

    如果您只是在 es.PivotTableWizard 之后打开“(”,您会看到所有参数,或者您可以在此处获取它们:

    https://msdn.microsoft.com/de-de/library/office/ff839228.aspx

    【讨论】:

    • 它实际上并不需要它们中的任何一个。
    猜你喜欢
    • 2014-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-02
    • 2018-03-29
    相关资源
    最近更新 更多