无法使用VBA从Power Pivot数据模型创建数据透视表

4

我正在使用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)中。
顺便说一句,我可以在PowerPivot选项卡下手动添加一个数据透视表。管理>首页>数据透视表。我正在尝试在VBA中完成相同的事情。顺便说一下,录制宏直到我开始操作刚刚创建的数据透视表之前都没有记录任何内容。
非常感谢任何帮助。
谢谢... Josh

1
我已经运行了你的代码并尝试了多种变化以重现错误,但是我无法做到。我唯一产生的错误是当一个数据透视表与之前的数据透视表重叠时。请确保它们不会重叠。将 "TableDestination:=Range("A3")" 更改为类似于 "AA100" 的内容,如果这样可以解决问题,那么你就知道这是导致错误的原因了。 - Brian B.
这个或许可以帮到你。 - ZAT
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Mike
@Mike,这与问题无关。你试过上面的代码吗?Brian B.是正确的。 - Maciej Los
@MaciejLos:不,但我曾通过在同一行中操作 A1 样式的范围地址并将它们传递给 Range() 对象来生成相同的错误,并且我已经成功地使用我提出的方法解决了它。我不能代表 OP 的机器,但这个调整解决了我的类似问题。除此之外,我使用评论部分建议潜在的改进,而不是回答问题。 - Mike
@Mike,你说得对。这可能取决于机器/办公室设置。感谢您宝贵的评论。 - Maciej Los
1个回答

0

虽然对你来说已经太晚了,但这可能会帮助到其他人:

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接