【问题标题】:Can't create Pivot table from Power Pivot Data Model using VBA无法使用 VBA 从 Power Pivot 数据模型创建数据透视表
【发布时间】:2015-11-15 21:55:01
【问题描述】:

使用 Excel 2013,我尝试使用现有的 Power Pivot 模型通过 PivotTables.Add 方法在工作簿中创建数据透视表。我的 PivotCache 似乎有问题。这是我到目前为止所做的:

    Dim pc As PivotCache, i As Long
    '
    i = 1
    For Each pc In ActiveWorkbook.PivotCaches
      Range("a" & i).Value = pc.Index
      Range("b" & i).Value = pc.CommandText
      i = i + 1
    Next

产生这个:

1    Model
2    Model
3    Model

但是,运行以下代码会引发运行时错误:

    Range("a1").Select
    ActiveSheet.PivotTables.Add _
    PivotCache:=ActiveWorkBook.PivotCaches(1), _
    TableDestination:=Range("A3")

错误是:

Run-time Error '1004':
Application-defined or object-defined error

所有三个可用的 PivotCache 索引 (1-3) 都会出现该错误。

FWIW,我可以在 PowerPivot 功能区下手动添加数据透视表。管理 > 主页 > 数据透视表。我试图在 VBA 中完成同样的事情。顺便说一句,在我开始操作刚刚创建的数据透视表之前,记录宏不会记录任何内容。

任何帮助将不胜感激。

谢谢...乔希

【问题讨论】:

  • 我已经运行了您的代码并尝试了多种变体以重现错误 - 我不能。我产生的唯一错误发生在数据透视表与以前的数据透视表重叠时。确保您没有重叠。更改:将 TableDestination:=Range("A3") 更改为“AA100”之类的内容。如果这有效,那么您就会知道这是导致错误的原因。
  • This 可能会对您有所帮助。
  • 尝试在您的代码中使用 R1C1 样式的范围引用,而不是 A1 样式。这个编辑最近为我解决了一个类似的问题。
  • @Mike,与问题无关。你试过上面的代码吗?布赖恩 B. 是对的。
  • @MaciejLos :不,但是我通过在将它们传递给 Range() 对象的同一行中操作 A1 样式范围地址产生了相同的错误,并且我已经成功使用我建议的方法解决了它。我不能代表 OP 的机器,但这种调整解决了我的类似问题。除此之外,我使用评论部分提出了潜在的改进建议,而不是回答问题。

标签: vba excel


【解决方案1】:

虽然对你来说为时已晚,但这可能对其他人有所帮助:

Sub xlPivotTable()

   Dim pc As PivotCache
   Dim pt As PivotTable

   'Create PivotCache from PowerPivot Data Model
   Set pc = ThisWorkbook.PivotCaches.Create(SourceType:=xlExternal, _
   SourceData:=ThisWorkbook.Connections("ThisWorkbookDataModel"), _
   Version:=xlPivotTableVersion15)

   'Create PivotTable from PivotCache
   Set pt = pc.CreatePivotTable(TableDestination:=ActiveCell, _
   DefaultVersion:=xlPivotTableVersion15)

   Set pt = Nothing
   Set pc = Nothing

End Sub

将 Excel 2010 的 xlPivotTableVersion 更改为 14,15 用于 Excel 2013 和 2016。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-16
    相关资源
    最近更新 更多