Hallo

ik ben redelijk onbekend met macro's in Excel, maar ben aan het leren terwijl ik werk.
Mijn vraag draait rond een Excel met een draaitabel (omgezet in OLAP cubes) waaraan 35 verschillende slicers hangen (alle slicers hebben twee values, de naam van de slicer eigenlijk en (leeg)).
Ik moet manueel elke slicer optie (niet de (leeg)) een PDF maken van het resultaat op de draaitabel. Daarna moet ik de slicer clearen, daarna de volgende slicer en dito optie aanklikken en hetzelfde doen.

Ik wil dit dus automatiseren, en een PDF maken van een Excel-sheet heb ik al gemaakt, dat kan ik al. Het probleem zit hem in het doorlopen van de verschillende slicers en de sliceroptie die ik nodig heb.

Als ik een macro opneem voor twee slicers krijg ik dit als resultaat:
Code:
ThisWorkbook.SlicerCaches("Slicer_All").VisibleSlicerItemsList = Array("[FiliaalOmzet].[All].&[All]")
ThisWorkbook.SlicerCaches("Slicer_All").ClearManualFilter

ThisWorkbook.SlicerCaches("Slicer_AllExSoi").VisibleSlicerItemsList = Array("[FiliaalOmzet].[AllExSoi].&[AllExSoi]")
ThisWorkbook.SlicerCaches("Slicer_AllExSoi").ClearManualFilter
Ik heb dus een loop nodig voor elke bestaande slicer en daarna een loop om door de gedefinieerde optie te gaan per slicer (voor elke slicer zal dit anders zijn)...

Code:
Sub slicers(slName As Variant)    Dim slItem As SlicerItem
    Dim slDummy As SlicerItem
    Dim slCache As SlicerCache
    Dim sl As Slicer
    Dim slItemsArray() As Variant  ' store values for matching SlicerItems in an Array
    ReDim slItemsArray(1 To 2)
    slItemsArray(1) = "[FiliaalOmzet].[All].&[All]"
    slItemsArray(2) = "[FiliaalOmzet].[AllExSoi].&[AllExSoi]"


    Set wb = ThisWorkbook
    Set slCache = wb.SlicerCaches(slName)


         For Each slvalue In slItemsArray ' Loop through the Array containing the values you want to use to match with SlicerItems
             For Each slItem In slName.SlicerCache
                sl.ClearManualFilter
               For Each slDummy In sl.SlicerItems
                  slDummy.Selected = (slDummy.Name = slItem.Name)
                  If slItem.Name = slvalue.Name Then
                    MsgBox slvalue.Name ' do stuff here if the Selected SlicerItem matches the target value in your Array, otherwise it will move on to selecting next SlicerItem
                  End If
               Next slDummy
             Next slItem
        Next slvalue
End Sub


Sub slicerArray()
    Dim slArray As Variant ' store Slicer names in an Array
    ' Set slArray values here
        slArray = Array("Slicer_All", "Slicer_AllExSoi")
    For Each slName In slArray ' Loop through Array with Slicer Names and call Sub above for each
        Call slicers(slName)
    Next slName
End Sub
Ik heb dit reeds gevonden, maar zit vast aan de tweede For Each ...

Iemand die me op weg kan helpen?