Страницы: 1
RSS
макрос: обновление сводных таблиц во всей книге при изменении данных
 
Добрый день! какой макрос использовать, чтобы сводные автоматом обновлялись при изменении данных?. Метод/свойство в следующем макросе не подходит в моем случае:
Код
Sub Worksheet_SelectionChange(ByVal Target As Range)
Sheets("Лист2").PivotTables("СводнаяТаблица1").PivotCache.Refresh
End Sub

потому что данный макрос размещается в модкле листа,а у меня в процессе работы лист с исходный таблицей полностью удаляется и заменяется другим, соответственно вместе с листом удаляется и макрос из примера выше. Думаю, что нужен макрос для размещения в модуле книги, который бы отслеживал изменения в таблицах и обновлял сводную. Подскажете, как можно решить проблему?

 
Я вас не пойму, если исходный лист из которого сделана сводная удаляется, то тогда откуда ей обновляться?
 
mrzv, при обновлении данных из другого файла копируется новый лист с новой таблицей. Названия листа и умной таблицы присваиваются те же, что были в "старом" удаленном листе, поэтому сводная без проблем "перекидывает" свой источник данных на новую таблицу. Надеюсь, понятно объяснил.. Все делается автоматом макросами.
 
Доброе время суток.
Владимир, так вроде ничего сложного
Код
Public Sub refreshPivots()
    Dim pCache As PivotCache
    For Each pCache In ActiveWorkbook.PivotCaches
        pCache.Refresh
    Next
End Sub
Изменено: Андрей VG - 20.07.2018 15:17:29 (Что-то я как в песьне - они всё путают и имя и названья... Но чтобы так... :( Приношу свои извинения)
 
Андрей VG, спасибо, но немного не то. Мне надо, чтобы автоматом обновлялось при изменении исходных данных. А тут получается, что макрос нужно выполнить принудительно (размещаю просто в модуль). При размещении макроса в модуле книги, обновления не происходит. Хотя может я что-то делаю не так - в VBA я только начинаю..

П.С. если потребуется пример, то смогу только в понедельник..хотя мне трудно представить пример, в котором лист с исходной таблицей заменяется новым листом
Изменено: Vladimir Chebykin - 20.07.2018 16:01:07
 
Цитата
Vladimir Chebykin написал:
Мне надо, чтобы автоматом обновлялось при изменении исходных данных
ну, так и вызовите его после изменения.
 
смысл какой? Куда правильнее обновлять при переходе на лист со сводной таблицей. Или это не тот случай?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий(The_Prist) Щербаков, спасибо за подсказку! Как это часто бывает, все оказалось намного проще - нужно было лишь по другому взглянуть на проблему, Worksheet_Activate решает задачу:
Код
Private Sub Worksheet_Activate()
Sheets("Лист1").PivotTables("Сводная таблица1").PivotCache.Refresh
End Sub
 
Цитата
Vladimir Chebykin написал:
Worksheet_Activate решает задачу
И каждый раз, нужно это или не нужно - обновлять сводную? А если обновление минуты 2 или больше?
 
Андрей VG, в моем случае - это около 1000 строк и 30 столбцов без формул, т.е. занимает доли секунды. просто Ваш код я не смог "прикрутить" , чтобы сводная автоматом обновлялась при изменении исходника ( может просто потому что я "не шарю" в макросах, о чем писал в сообщении #5) - только принудительно.
 
Цитата
Vladimir Chebykin написал:
mrzv , при обновлении данных из другого файла копируется новый лист с новой таблицей. Названия листа и умной таблицы присваиваются те же, что были в "старом" удаленном листе, поэтому сводная без проблем "перекидывает" свой источник данных на новую таблицу. Надеюсь, понятно объяснил.. Все делается автоматом макросами.
Так вот на этом этапе и нужно ее обновить теми же маросами.
 
Цитата
skais675 написал:
Так вот на этом этапе и нужно ее обновить теми же маросами
Наверное, я не до конца выразил задачу. Таблица обновилась - ок, но в дальнейшем с ней продолжают работать, а именно: изменять комментарии. Вся фишка в том, что необходимо видеть изменяемые комментарии. Ладно, чтобы было яснее во вложении пример, который обещал в сообщении 5 (хотя задачу уже решил).
 
Ну я бы
1. Либо бы не удалял лист вовсе, а просто обновлял бы в таблице данные, и тогда по событию все бы работало.
2. Либо вставлял бы макрос на свежевставленный лист.
3. В принципе и Ваш вариант решил задачу - тоже имеет место быть.
Изменено: skais675 - 23.07.2018 11:12:11
 
Цитата
skais675 написал:
2. Либо вставлял бы макрос на свежевставленный лист
возможно ли это сделать автоматом? например макрос из сообщения №1 автоматически вставлять в модуль нового листа?  
 
Здесь
Страницы: 1
Наверх