Страницы: 1
RSS
RefreshAll для QueryTable - данные не успевают обновиться до того, как пойдут дальнейшие расчеты.
 
Добрый день.
В процедуре последовательно открываю файлы в которых QueryTable, обновляю данные (RefreshAll ), провожу некоторые манипуляции сохраняю и закрываю файл.
проблема в том, что в QueryTable стоит "фоновое обновление", и после RefreshAll  идет обновление данных и параллельно продолжает выполняться макрос. в связи с чем появляется диалоговое окно с вопросом "Это может прервать обновление данных. Продолжить?"

Собственно вопрос, как можно это обойти (т.е., чтоб пока обновление не прошло, макрос не продолжал "бежать")?
Как вижу, есть 2 варианта, ни один из которых мне не нравится:
1) Убрать флаг "фоновое обновление" (для меня не подойдет, т.к. "оркестр не мой, и музыку заказать не выйдет")
2) после RefreshAll  ставить ожидание Application.Wait (Now + TimeValue("какое-то время"))  - это получится не универсально (много не хочется ставить, чтоб не долго все это обновлялось, а если мало поставлю - риск, что в будущем вылезу за эти приделы)

Может кто сталкивался с таким и знает как добиться первоочередного выполнения RefreshAll  не убирая флаг "фоновое обновление"?
Изменено: Ivan.kh - 06.05.2016 16:07:58
 
попробуйте после .RefreshAll
Код
Application.CalculateUntilAsyncQueriesDone
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
JeyCi, спасибо. Завтра протестирую и отпишусь Все отлично сработало ... еще раз огромное Вам спасибо.
Изменено: Ivan.kh - 11.05.2016 15:30:00
 
Анологичная задача! Только для внешних ссылок, т.е. обновление данных в ячейках из инета.
Но данная комманда подвешивает Excel. Что не так?
Код
ActiveWorkbook.Refreshall
Application.CalculateUntilAsyncQueriesDone
Изменено: davidtro3 - 13.11.2016 16:46:26
 
Доброе время суток.
Цитата
davidtro3 написал: Что не так?
Проблемы с переводчиком Google? Прямой перевод
Человеческий - пока не завершено обновление - ничего не делать. Потому и подвешивает :)
 
Как-то не помогает.
После CalculateUntilAsyncQueriesDone макрос просто перестает работать (дальше что-либо делать).
То же самое после DoEvents.
Страницы: 1
Наверх