2016-08-17 123 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

相关问题