如何动态更改数据透视表缓存

时间:2017-04-21 05:46:58

标签: vba pivot-table

我正在尝试这种方法,使代码更加动态,以改变枢轴的数据源,但它不起作用。我试图使用给定的变量传递所有内容

 Set wkb = Workbooks.Open("E:\QBR - EMEA\Refresh Files\Distri templates2\SOURCEDATA_EMEA Pack_MERGE.xlsb") 
            Set wks = wkb.Sheets("Data") 
            Set StartPoint = wks.Range("A2") 
            Set DataRange = wks.Range(StartPoint, StartPoint.SpecialCells(xlLastCell)) 
    NewRange = wks.Name & "!" & _ DataRange.Address(ReferenceStyle:=xlR1C1) 
    ActiveSheet.PivotTables("PivotTable1").ChangePivotCache ActiveWorkbook. _ PivotCaches.Create( _ SourceType:=xlDatabase, _ SourceData:=NewRange)

1 个答案:

答案 0 :(得分:0)

如果您在变量中有filenamepathrecordcountsheetname,那么您可以按如下方式更改代码:

ActiveSheet.PivotTables("PivotTable1").ChangePivotCache ActiveWorkbook. _
    PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
    "'" & path & "\[" & filename & "]" & sheetname & "'!R1C1:R" & recordcount & "C25" _
    , Version:=xlPivotTableVersion15)

您拥有的原始SourceData"E:\QBR - EMEA\Refresh Files\Distri templates2\[SOURCEDATA_EMEA Pack_MERGE.xlsb]Data!R1C1:R500000C25")只是一个字符串 - 它可以被任何其他以正确格式结束的字符串替换。