Ошибка VBA с Excel Slicer - как использовать SlicerCacheLevel для перебора значений среза? - PullRequest
0 голосов
/ 25 февраля 2020

Я использовал приведенный ниже код для создания нескольких PDF-файлов из файла Excel с использованием значений среза. Теперь я хочу снова использовать тот же код в другом файле. Однако, поскольку слайсер в этой конкретной рабочей книге, которую я использую, взят из источника данных OLAP, я знаю, что должен использовать SlicerCacheLevels, чтобы получить элементы слайсера без генерации ошибки, но я не могу понять, как это сделать. Любая помощь будет принята с благодарностью.

Sub Print_All()
Dim slItem As SlicerItem

Dim i As Long

With ActiveWorkbook.SlicerCaches("Slicer_ps_business_unit")
    '--deselect all items except the first
    .SlicerItems(1).Selected = True
    For Each slItem In .VisibleSlicerItems
        If slItem.Name <> .SlicerItems(1).Name Then _
            slItem.Selected = False
    Next slItem


    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
    Filename:="C:\users\gw\documents\" & .SlicerItems(1).Name & "_CLIN_QMI" & ".pdf", _
    Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, _
    OpenAfterPublish:=False




    '--step through each item and run custom function
    For i = 2 To .SlicerItems.Count
        .SlicerItems(i).Selected = True
        .SlicerItems(i - 1).Selected = False


    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
    Filename:="C:\users\gw\documents\" & .SlicerItems(i).Name & "_CLIN_QMI" & ".pdf", _
    Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, _
    OpenAfterPublish:=False


    Next i
End With

End Sub
...