Cześć,
Opiszę cel jaki chcę osiągnąć z wykorzystaniem VBA oraz problem jakiego nie mogę przejść:
Utworzyłem w Excel 2 zakładki:
1.) Zawiera tabele przestawną z podłączeniem do kostki OLAP
2.) Zawiera 2 kolumny: " Id Klienta", "Id Umowy"
Cel jaki chcę osiągnąć:
Często pobieram z CRM listę Id'ów umów LUB id'ków Klienta (mogą być ich tysiące).
Chciałbym po wklejeniu ich do zakładki drugiej móc poprzez VBA wprowadzić je w filtr tabeli przestawnej z zakładki pierwszej (czyli chcę analizować wyłącznie wybraną grupę rekordów).
Co zostało wykonane:
1.) Tworzę tablicę z określoną ilością rekordów (myArray)
2.) W pętli uzupełniam tablicę o kolejne rekordy z zakładki 2giej
3.) Próbuję wprowadzić filtr z wykorzystaniem tablicy z pkt.1 ale tutaj występuje błąd 1004, którego nie mogę przejść
Kod:
Sub UruchomFiltr()
'Sprawdzenie ilosci rekordow do wprowadzenia do filrowania
Dim IloscRekordowA As Long
IloscRekordowA = Worksheets("WarunkiFiltrowania").Cells(Worksheets("WarunkiFiltrowania").Rows.Count, "A").End(xlUp).Row
'Warunek jezeli ilosc jakikolwiek rekord wprowadzony
If IloscRekordowA > 1 Then
'---------------------------------------------------------------------------------------------------------------------------
'Zmienne do wyznaczenia kodu wprowadzajacego filtry do kostki OLAP
Dim myArray() As String
ReDim myArray(IloscRekordowA - 1) As String
Dim ColumnValue As String
'Petla dla kazdego rekordu, ktory ma byc wprowadzony do filtra
For i = 2 To IloscRekordowA
ColumnValue = Worksheets("WarunkiFiltrowania").Range("A" + CStr(i))
myArray(i - 1) = """[Klient].[NK Klient].&[" + CStr(ColumnValue) + "] """
Next i
'---------------------------------------------------------------------------------------------------------------------------
'Usuwanie z filtra kolumny
Worksheets("Analiza").PivotTables("Tabela przestawna Analiz").CubeFields( _
"[Klient].[NK Klient]").Orientation = xlHidden
'Dodawanie do filtra kolumny
Worksheets("Analiza").PivotTables("Tabela przestawna Analiz").CubeFields( _
"[Klient].[NK Klient]").Orientation = xlPageField
'Ustawianie na wybieranie wielu elementow
Worksheets("Analiza").PivotTables("Tabela przestawna Analiz").CubeFields("[Klient].[NK Klient]").EnableMultiplePageItems = True
'Proba wprowadzenia do filtra wartosci z tabeli
Worksheets("Analiza").PivotTables("Tabela przestawna Analiz").PivotFields( _
"[Klient].[NK Klient].[NK Klient]").VisibleItemsList = Array(myArray)
End If
End Sub
Próby wykonane:
1.) Próbowałem transformować sam zakres wierszy
2.) Próbowałem zbijać wszystko do jednego długiego Stringa (zgodnie z wygenerowanym kodem z rejestratora makr)
3.) Próbowałem wprowadzić samo myArray (bez Array(myArray))
W czym jest błąd w powyższy kodzie? Co jest błędne?