Я создал макрос для извлечения определенных столбцов из закрытой рабочей книги и вставки их в рабочую таблицу. Этот лист затем используется для создания сводных таблиц и далее используется с функциями vlookup. Единственная проблема, которую я имею, - фильтры. Есть 2 пользователя данных, которым в фильтре назначены разные переменные. Кроме того, переменные в фильтре могут меняться. Хотя пользователям нужны одинаковые фильтры, некоторые из фильтров, назначенных пользователю, могут присутствовать не во всех извлекаемых файлах. Я написал код, который будет фильтровать сводные таблицы, но он не будет работать, если будут добавлены новые фильтры или если назначенный фильтр отсутствует в файле для извлечения. Как бы исправить этот код, чтобы игнорировать фильтры вне назначенных пользователем переменных в фильтре, а также игнорировать, если одна или несколько назначенных переменных не включены в фильтр.
Private Sub CommandButton1_Click()
Worksheets("Totals").Range("G1") = TextBox2.Value
Worksheets("Totals").Range("C1") = TextBox1.Value
If ComboBox1 = "3" Then
Sheets("BPAR").Select
ActiveSheet.PivotTables("PivotTable1").PivotFields("FAC"). _
CurrentPage = "(All)"
With ActiveSheet.PivotTables("PivotTable1").PivotFields("FAC")
.PivotItems("4").Visible = False
.PivotItems("12").Visible = False
End With
Sheets("BCOP").Select
ActiveSheet.PivotTables("PivotTable1").PivotFields("FAC"). _
CurrentPage = "(All)"
With ActiveSheet.PivotTables("PivotTable1").PivotFields("FAC")
.PivotItems("4").Visible = False
.PivotItems("12").Visible = False
End With
ActiveWorkbook.RefreshAll
Else
Sheets("BPAR").Select
ActiveSheet.PivotTables("PivotTable1").PivotFields("FAC"). _
CurrentPage = "(All)"
With ActiveSheet.PivotTables("PivotTable1").PivotFields("FAC")
.PivotItems("4").Visible = True
.PivotItems("12").Visible = True
End With
Sheets("BCOP").Select
ActiveSheet.PivotTables("PivotTable1").PivotFields("FAC"). _
CurrentPage = "(All)"
With ActiveSheet.PivotTables("PivotTable1").PivotFields("FAC")
.PivotItems("4").Visible = True
.PivotItems("12").Visible = True
End With
ActiveWorkbook.RefreshAll
End If
ActiveWorkbook.RefreshAll
Unload Me
End Sub