Excel VBA数据透视表缓存类型不匹配运行时错误“13”

时间:2015-06-11 15:45:44

标签: excel-vba runtime-error pivot-table vba excel

感谢您对此提出任何意见。我正在尝试创建一个简单的数据透视表,从表格“5月15日趋势5”中获取数据并将其放在我的数据透视表表格中,名为“错误按重要性 - 透视”。

当我尝试使用create方法设置数据透视缓存范围时,它返回类型不匹配的运行时错误。我检查了参数,看起来我正确设置它。我确实尝试指定数据透视表版本,但仍然得到相同的错误。我的代码如下。

我假设它与pvtCache变量或我将其设置到范围的方式有关,但我无法找出任何解决方案。

Sub PivotTableCode()

Dim pvtCache As PivotCache 
Dim pvt As PivotTable
Dim pf As PivotField
Dim pi As PivotItem 
'Set the cache of the pivot table
Sheets("5 Month Trending May 15").Select
Set pvtCache = ActiveWorkbook.PivotCaches.Create(xlDatabase, Range("A2:H38"))

'create the Pivot Table
Sheets("Errors by Criticality - Pivot").Select
Set pvt = ActiveSheet.PivotTables.Add(pvtCache, Range("AP2"), "MyPivotTable") 
End Sub

1 个答案:

答案 0 :(得分:1)

documentation for PivotCaches.Create表示

  

如果SourceData不是SourceType,则需要xlExternal参数。它可以是Range对象(SourceTypexlConsolidationxlDatabase时)或Excel工作簿连接对象(SourceTypexlExternal时) )。

尽管如此,宏录制器始终会为String创建SourceData(It will even create a bad string if the Sheet has a space in the name).

鉴于对宏录制器的偏好,我经常将其作为带有地址的String提供。

我以前能够在这里提供Range所以我不确定具体是什么阻止了Range在这种情况下的使用。

要使用String,您的代码应如下所示:

Set pvtCache = ActiveWorkbook.PivotCaches.Create(xlDatabase, "'5 Month Trending May 15'!A2:H38")