【问题标题】:CreatePivotTable() error - Application-defined or Object-defined errorCreatePivotTable() 错误 - 应用程序定义或对象定义错误
【发布时间】:2016-09-28 20:10:06
【问题描述】:

目标

根据动态信息范围创建数据透视表。

方法

  1. 识别并激活包含数据透视表源数据(srcDatalastRow)的工作表(ws
  2. 标识target 工作表将在其中显示新的数据透视表 (@​​987654326@)
  3. 突出显示并记录源数据 (srcData)
  4. 创建数据透视缓存 (pvtCache)
  5. 在工作表和单元格上放置数据透视表 (@​​987654329@)

代码

Sub createPivot()

Dim ws As Worksheet
Dim pvtCache As pivotCache
Dim pvt As pivotTable
Dim srcData As String
Dim lastRow As Long
Dim startPvt As String
Dim target As Worksheet

'Select pivot table data
Worksheets("CONSOLIDATED").Activate
Set ws = ActiveSheet
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
srcData = ActiveSheet.Name & "!" & Range("A1:H" & lastRow).Address(ReferenceStyle:=xlR1C1)

'Set pivot table location
Set target = ThisWorkbook.Worksheets("PIVOT")
startPvt = target.Name & "!" & target.Range("A1").Address(ReferenceStyle:=xlR1C1)

'Create pivot cache
Set pvtCache = ActiveWorkbook.PivotCaches.Create( _
    SourceType:=xlDatabase, _
    SourceData:=srcData)

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

End Sub

灵感来自:http://www.thespreadsheetguru.com/blog/2014/9/27/vba-guide-excel-pivot-tables

问题

运行时错误“1004”:应用程序定义或对象定义错误

@线:

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

问题

  1. 我疯了吗?我已经多次校对这段代码,无法理解我哪里出错了。在这一点上,我不知所措。任何帮助都可以解释为什么会发生错误。

【问题讨论】:

  • 无法重现您的问题。我拿了你的确切代码并生成了一个数据透视表。你确定那条线有问题吗?这是更大代码体的一部分吗?
  • @Parfait - 这是整个模块代码。我想知道这是否需要我在 excel 的 vba 编辑器中调整设置?
  • 不需要调整,因为所有这些对象,pvtCache,pvtTable 都是 Excel 对象库的。我看到 ThisWorkbookActiveWorkbook 分配。您是否跨多个工作簿工作?
  • @Parfait 我在同一个工作簿中工作,但跨越不同的工作表。重新启动 excel 已导致删除原始错误,但仍未创建数据透视表
  • @Parfait - 我将 Excel 选项更改为读取 R1C1 标题并重新启动 Excel。这已经解决了这个问题。感谢您的所有帮助!

标签: excel vba pivot-table


【解决方案1】:

回答我自己的问题:

@Parfait 是正确的,代码没有错误。但是,宏在缓存阶段仍然显示出冻结的迹象。为了修复这个错误,我在代码库的开头添加了以下代码。

'Delete previous pivottable
Worksheets("PIVOT").PivotTables("PivotTable1").TableRange2.Clear

此代码会删除任何预先存在的数据透视表,以便为新表做准备。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 2013-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多