Автоматизация обновления данных из подключения для Эксель: ошибка обновления

Рейтинг: 1Ответов: 1Опубликовано: 11.05.2023

я столкнулся со следующей проблемой: В рамках автоматизации обновления данных из подключения для Эксель я написал макрос, который сначала обновляет подключения, а затем сразу обновляет сводные таблицы, которые строятся на данных из подключения. Видимо, из-за того, что Эксель не успевает обновить подключение и сразу начинает обновлять сводные таблицы, возникает ошибка, прерывающая обновление.

Wb.RefreshAll
Sheets("Лист1").PivotTables("Таблица1").PivotCache.Refresh  
Wb.Save

сообщение об ошибке

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

Буду благодарен за ваши идеи)

Ответы

▲ 1

Чтобы убедиться, что данные из подключения полностью обновлены перед обновлением сводных таблиц, можно использовать свойство BackgroundQuery в экземплярах сводных таблиц, которые строятся на данных из подключения. Если установить это свойство равным False, то Excel будет ждать, пока данные будут полностью обновлены, прежде чем продолжать выполнение кода.

Попробуй использовать следующий код:

Wb.RefreshAll
With Sheets("Лист1").PivotTables("Таблица1").PivotCache
    .BackgroundQuery = False
    .Refresh
End With
Wb.Save

Этот код выполнит обновление всех подключений в книге, а затем обновит сводную таблицу "Таблица1" на листе "Лист1", дождавшись полного обновления данных из подключения. После этого книга будет сохранена.