У меня есть этот код, который обновляет данные сводной таблицы.

Dim wsPT as Worksheet
Dim pt as PivotTable

Set wsPT = Thisworkbook.Sheets("Pivot")

With wsPT
    For Each pt in .PivotTables
        pt.RefreshTable
    Next pt
End With

Он работает нормально, но немного медленно.
У меня 10 PT в WS.
Как я могу улучшить скорость обновления?
Любая помощь приветствуется.

1
L42 18 Окт 2013 в 07:12

1 ответ

Лучший ответ

Вот один лайнер

ActiveWorkbook.RefreshAll

В качестве альтернативы, если вам нужно решение без VBA, тогда в Data Ribbon нажмите Refresh All или нажмите сочетание клавиш CTRL + ALT + F5

Снимок экрана:

enter image description here

2
Siddharth Rout 18 Окт 2013 в 07:23
Хорошо, я попробую, что быстрее. Но это также обновит все остальные PT в других WS. Кстати, использование VBA не подходит. Код является частью более крупного кода, который автоматически отправляет почту. Я хочу повысить скорость, чтобы не полагаться на Application.Wait.
 – 
L42
18 Окт 2013 в 07:23
2
Попробуйте Application.Screenupdating = False перед обновлением, а затем снова установите True
 – 
Siddharth Rout
18 Окт 2013 в 07:24
Ага, это намного быстрее, чем For Loop. Даже если Application.Screenpudating не установлен на False. Но это значительно улучшится, если вы отключите и включите Application.Screenupdating во время и после событий. Спасибо.
 – 
L42
18 Окт 2013 в 07:29