2017-04-21 96 views
0

我正在嘗試這種方法,以使代碼更改爲更改動態數據源的動態但其不起作用。我試圖通過使用變量的一切,給如何動態地更改Pivot緩存

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) 
+0

您可以用變量替換硬編碼的值,您可以用編程方式將其設置爲任何需要的值。 – YowE3K

+0

你可以使用'RANGE'-函數和'String'作爲路徑和文件名嗎? – IQV

+0

可以請你提供一個如何做的例子嗎? – karambir

回答

0

如果你有filenamepathrecordcount和變量sheetname那麼你就可以改變你的代碼如下:

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")只是一個字符串 - 它可以被任何其他代碼取代,它以正確格式的字符串結尾。

+0

我想這樣做------ 設置wkb = Workbooks.Open(「E:\ QBR - EMEA \ Refresh Files \ Distri templates2 \ SOURCEDATA_EMEA Pack_MERGE.xlsb」) 設置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) – karambir

+0

@karambir請將該代碼添加到您的問題中 - 幾乎不可能閱讀評論。 – YowE3K

+0

@ YowE3K請檢查問題 – karambir