【发布时间】: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 的机器,但这种调整解决了我的类似问题。除此之外,我使用评论部分提出了潜在的改进建议,而不是回答问题。