我有一个数据切片器,其中包含一个链接到数据透视表的网站列表。我想循环切片器来实现以下目的:
选择一个网站
显示相关值
将数据导出为PDF文件
选择下一个网站等
我已经获得了将数据导出为PDF文件的代码,但我正在努力遍历切片器并在每个站点上进行过滤。目前我有以下内容:
Sub ExportPDFs()
Dim sI As SlicerItem
For Each sI In ActiveWorkbook.SlicerCaches("Slicer_site").SlicerItems
Debug.Print sI.Name
Debug.Print Range("A3")
' ChDir "Q:\PROMs\Data Completeness\PDFs"
' ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
' "Q:\PROMs\Data Completeness\PDFs\PROMS data completeness - " & sI.Name & ".pdf", _
' Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
' :=False, OpenAfterPublish:=False
Next
End Sub
我添加了debug.print行(单元格“A3”包含我的工作表上的站点名称,所以当我选择不同的切片器项时这会改变)来测试它,它遍历每个切片器项但不会更改数据,以便调试窗口显示以下内容:
Site 1
Site 1
Site 2
Site 1
Site 3
Site 1
Site 4
Site 1
如何在每次循环时过滤数据?
答案 0 :(得分:0)
您需要主动告诉VBA选择特定切片器项并取消选择其余项。可能有一种更有效的方法来做到这一点,但我刚刚创建并测试了以下内容并且它有效:
Dim sI As SlicerItem, sI2 As SlicerItem, sC As SlicerCache
Set sC = ActiveWorkbook.SlicerCaches("Slicer_site")
With sC
For Each sI In sC.SlicerItems
sC.ClearManualFilter
For Each sI2 In sC.SlicerItems
If sI.Name = sI2.Name Then sI2.Selected = True Else: sI2.Selected = False
Next
Debug.Print sI.Name
'add export to PDF code here
Next
End With