你是我最后的希望。我已经在这个问题上工作了三天而没有运气(在互联网上的信息令人沮丧......)
我有一个宏来制作'主'文件的副本(将几个模块和几张纸复制到新副本中)。其中一个复制的工作表包含几个引用“主”文件数据的枢轴和切片器。
主文件的副本不像主文件那样包含整个数据集,并且这些剪切将由不同的用户使用,因此我不希望枢轴引用主数据集。 所以我的挑战是改变每个支点的源数据(最好是在同一个PivotCache
上),然后将适用的切片机连接到必要的支点。
我的代码断开切片与枢轴的工作正常,我的代码重新连接切片机工作正常。我无法获得第一个改变数据源的支点。
令人沮丧的是,在两个不同的时刻,我已经让它发挥作用,只是让它在下次测试时抛出Run-time error '13': Type mismatch
。
我的第一个想法是我对工作簿/工作表名称不够具体,所以我修改了我的代码以反映确切的工作簿和工作表。唉,错误仍然存在。引用的工作簿和工作表都存在,没有缺少的列标题,有一个名为PivotTable1
的数据透视表,我的范围正确设置。
错误发生在With
语句的第二行。
Dim pTable As PivotTable
Dim LEADData As Range
Dim sCache As SlicerCache
Dim pCache As PivotCache
thislastrow = Sheets("LEAD Data").Range("B" & Rows.Count).End(xlUp).Row
Set LEADData = Workbooks(cutwkbk2).Sheets("LEAD Data").Range("B9:AT" & thislastrow)
'Workbooks(cutwkbk2).Activate
With Workbooks(cutwkbk2).Sheets("Cabinet Reporting")
'Debug.Print .PivotTables("PivotTable1").SourceData
.PivotTables("PivotTable1").ChangePivotCache Workbooks(cutwkbk2).PivotCaches.Create(xlDatabase, LEADData)
End With
我也尝试使用像.PivotTables(1)
这样的数据透视索引,但这也会引发错误。对我来说令人困惑的部分是它如何在两个不同的时间点上运行,但即使测试之间没有任何变化,它也会失败...
请提供建议!我对此感到很茫然!
答案 0 :(得分:1)
在黑暗中拍摄..试试这个(未测试)
Sub Sample()
Dim pTable As PivotTable
Dim sCache As SlicerCache
Dim pCache As PivotCache
Dim LEADData As String
thislastrow = Sheets("LEAD Data").Range("B" & Rows.Count).End(xlUp).Row
LEADData = "LEAD Data!" & "R9C2:R" & thislastrow & "C46"
With Workbooks(cutwkbk2).Sheets("Cabinet Reporting")
.PivotTables("PivotTable1").ChangePivotCache Workbooks(cutwkbk2).PivotCaches.Create(xlDatabase, LEADData)
End With
End Sub
关于第二个想法,就像这样
Sub Sample()
Dim pTable As PivotTable
Dim sCache As SlicerCache
Dim pCache As PivotCache
Dim LEADData As String
thislastrow = Sheets("LEAD Data").Range("B" & Rows.Count).End(xlUp).Row
LEADData = ThisWorkbook.Path & "[" & _
ThisWorkbook.Name & _
"]LEAD Data!" & _
"R9C2:R" & thislastrow & "C46"
With Workbooks(cutwkbk2).Sheets("Cabinet Reporting")
.PivotTables("PivotTable1").ChangePivotCache Workbooks(cutwkbk2).PivotCaches.Create(xlDatabase, LEADData)
End With
End Sub