2016-08-17 120 views
0

一直試圖將相同的項目列表設置爲基於我在工作簿中的多個數據透視表之一中所做的更改的多個OLAP數據透視表。將項目列表設置爲多個數據透視表

錄製的宏(這將刪除舊的選擇以及):

Sub GetPivotFilter() 

ActiveSheet.PivotTables("Pivottabell4").PivotFields(_ 
    "[DimCampaign].[Campaigns].[Campaign]").VisibleItemsList = Array(_ 
    "[DimCampaign].[Campaigns].[Campaign].&[106679]", _ 'generated after i select campaing 
    "[DimCampaign].[Campaigns].[Campaign].&[106680]", _'generated after i select campaing 

    "[DimCampaign].[Campaigns].[Campaign].&[107049]")'generated after i select campaing 


End Sub 

我如何可以提取改變我的第一樞軸做(我不知道這些數字之前,我作出改變)?

我該如何得到這適用於那些可以添加廣告系列選項的數據透視表?

目前的解決方案,我有看起來雜亂無章,但工程:

Sub SetPivotFilter() 

ActiveSheet.PivotTables("Pivottabell4").PivotFields(_ 
"[DimCampaign].[Campaigns].[Campaign]").VisibleItemsList = Array(_ 
"[DimCampaign].[Campaigns].[Campaign].&[106679]", _  
"[DimCampaign].[Campaigns].[Campaign].&[106680]", _  
"[DimCampaign].[Campaigns].[Campaign].&[107049]") 
ActiveSheet.PivotTables("Pivottabell18").PivotFields(_ 
"[DimCampaign].[Campaigns].[Campaign]").VisibleItemsList = Array(_ 
"[DimCampaign].[Campaigns].[Campaign].&[106679]", _  
"[DimCampaign].[Campaigns].[Campaign].&[106680]", _  
"[DimCampaign].[Campaigns].[Campaign].&[107049]") 
'and so on 
End Sub 

所有幫助是非常讚賞

+0

問題 - 都106679,10680,107049樞軸字段'Campaign'中的所有項目? –

+0

@ShaiRado是的,這一次,但NeXT時間我需要改變活動有可能是或多或少的選定項目 – krib

+0

看到我的答案下面,它不包括設置數據透視表和字段,只篩選您請求的項目樞軸表 –

回答

0

下面的代碼通過所有數據透視表名稱環路是pvtTblNameArr(陣列),在工作表名稱「SheetPivot」(根據您的工作表名稱進行修改)。

Option Explicit 

Sub GetPivotFilter() 

Dim PvtTbl    As PivotTable 
Dim pvtitem    As PivotItem 
Dim pvtFld    As PivotField 
Dim pvtTblNameArr()  As Variant 
Dim i     As Integer 

' modify this array to all PivotTable names you need to modify (in the same sheet) 
pvtTblNameArr() = Array("Pivottabell4", "Pivottabell8") 

' loop though Pivot Table Names 
For i = LBound(pvtTblNameArr) To UBound(pvtTblNameArr) 

    ' change "SheetPivot" to your sheet name 
    Set PvtTbl = ThisWorkbook.Sheets("SheetPivot").PivotTables(pvtTblNameArr(i)) 

    ' set Pivot field variable to "Campaign" 
    Set pvtFld = PvtTbl.PivotFields("Campaign") 

    ' lop through all Pivot Items in "Campaign" Pivot Field 
    For Each pvtitem In pvtFld.PivotItems 

     Select Case pvtitem.Name 
      Case 106679, 106680, 107049 
       pvtitem.Visible = True 

      Case Else 
       pvtitem.Visible = False 

     End Select 

    Next pvtitem 

Next i 

End Sub 
+0

解決** 2 **的一部分,這有助於。在這裏獲得'運行時錯誤1004':'Set pvtFld = PvtTbl.PivotFields(「Campaign」)'。不能獲得PivotFields屬性到數據透視表類 – krib

+0

@krib你能更具體嗎?你什麼時候得到這個錯誤?在1 Pivot上運行正常後?不是全部?你所有的數據透視表都坐在同一張紙上嗎? –

+0

我試圖通過它(試圖學習),並在任何被改變之前得到該行的錯誤。 並非所有人都在那張紙上,但我可以弄清楚。 – krib

相關問題