Обновление сводной таблицы: RefreshTable, PivotCache.Refresh

Программирование на Visual Basic for Applications
silyin
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 16.05.2005 (Пн) 11:39

Обновление сводной таблицы: RefreshTable, PivotCache.Refresh

Сообщение silyin » 16.05.2005 (Пн) 11:50

Есть книга Excel "Каталог" (файл прикреплён к сообщению).
На листе "База" книги есть список (поля: "папка", "файл", "размер файла").
Поле "папка" списка первоначально содержит значения "1", "2" и "3".
На основании данных списка создаётся сводная таблица "СТ" на листе "СТ" книги.
Затем из списка на листе "База" удаляются записи, имеющие в поле "папка" значение "3".

Проблема: При обновлении данных сводной таблицы "СТ" элемент "3" из набора элементов поля "папка" сводной таблицы "СТ" не исчезает.

Чтобы решить указанную проблему, пробую код:

Код: Выделить всё
With Worksheets("СТ").PivotTables("СТ")
  .RefreshTable
  .PivotCache.Refresh
End With

Но этот код не помогает.

Как вы думаете, что не так?
Как можно обновить набор элементов поля сводной таблицы и привести его в соответствие с текущим состоянием списка (источника данных)?
Вложения
Каталог.zip
(7.53 Кб) Скачиваний: 72

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 16.05.2005 (Пн) 12:08

Лично у меня по коду ActiveSheet.PivotTables("СТ") .PivotCache.Refresh все сработало на ура.

silyin
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 16.05.2005 (Пн) 11:39

Сообщение silyin » 16.05.2005 (Пн) 12:50

uhm писал(а):Лично у меня по коду ActiveSheet.PivotTables("СТ") .PivotCache.Refresh все сработало на ура.


Спасибо.
У меня этот код приводит к нужному результату (элемент "3" исчезает из набора элементов поля "папка" сводной таблицы "СТ"), если действовать в следующем порядке:
1. поле "папка" удалить из области сводной таблиц;
2. запустить код;
3. поле "папка" добавить в область сводной таблицы.
Если поле "папка" не трогать, то при запуске кода нужный результат не достигается.
У тебя тоже?
А можно ли избежать действий 1 и 3?

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 16.05.2005 (Пн) 13:44

Не, у меня только п.2 работает :)
Впрочем, не знаю, я удалял из исходной таблицы ручками, а не кодом, может быть, в этом прикол, хотя очень маловероятно...

Может быть, у тебя старый/кривой офис?

silyin
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 16.05.2005 (Пн) 11:39

Сообщение silyin » 16.05.2005 (Пн) 14:05

А что ты ещё удалял?
В файле, прикреплённом к сообщению, уже всё удалено: в списке остались только записи, имеющие в поле "папка" значения "1" и "2", а набор элементов поля "папка" в сводной таблице содержит также лишний элемент "3".

Я пользуюсь MS Excel 2003.

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 16.05.2005 (Пн) 14:22

Ну, я "2" удалил все записи, все сработало. Не знаю, чем тебе еще помочь, увы. :?

silyin
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 16.05.2005 (Пн) 11:39

Сообщение silyin » 16.05.2005 (Пн) 15:14

Может быть, ты имеешь ввиду, что соответствующие значения ("3" или "2") перестают быть видны в области сводной таблицы? Так, после обновления данных сводной таблицы они у меня, конечно, тоже перестают быть видны в области сводной таблицы. Я имел ввиду другое: эти значения продолжают быть видны в раскрывающемся списке поля "папка" сводной таблицы, и, соответственно, продолжают оставаться в наборе PivotTables("СТ").PivotFields("папка").PivotItems.


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

    TopList