Добрый день. В процедуре последовательно открываю файлы в которых QueryTable, обновляю данные (RefreshAll ), провожу некоторые манипуляции сохраняю и закрываю файл. проблема в том, что в QueryTable стоит "фоновое обновление", и после RefreshAll идет обновление данных и параллельно продолжает выполняться макрос. в связи с чем появляется диалоговое окно с вопросом "Это может прервать обновление данных. Продолжить?"
Собственно вопрос, как можно это обойти (т.е., чтоб пока обновление не прошло, макрос не продолжал "бежать")? Как вижу, есть 2 варианта, ни один из которых мне не нравится: 1) Убрать флаг "фоновое обновление" (для меня не подойдет, т.к. "оркестр не мой, и музыку заказать не выйдет") 2) после RefreshAll ставить ожидание Application.Wait (Now + TimeValue("какое-то время")) - это получится не универсально (много не хочется ставить, чтоб не долго все это обновлялось, а если мало поставлю - риск, что в будущем вылезу за эти приделы)
Может кто сталкивался с таким и знает как добиться первоочередного выполнения RefreshAll не убирая флаг "фоновое обновление"?
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
Tani-kor, метод который вы используете Application.CalculateUntilAsyncQueriesDone своим названием говорит о том, что он ассинхронный, и то, что по мере его завершения должна выполниться калькуляция. Т.о. сохранение книги нужно выполнять в событии Calculate, когда все квери-запросы гарантировано будут выполнены