Подскажите, пожалуйста, как можно реализовать следующее:
Необходимо обновлять все запросы и подключения (я так понимаю это ActiveWorkbook.RefreshAll)
Далее сохранять файл.
Сделать цикличность выполнения макроса.
Есть несколько оговорок - изначально я сделал просто обновление запросов и сохранение книги, но в этом случае эксель не успевает обновить запросы перед сохранением, так что я предполагаю нужно сделать задержку между обновлением запросов и сохранением книги.
Вот что у меня уже есть. Этот макрос сохраняет книгу каждую минуту. Хотелось бы дополнить обновлением запросов. Буду очень признателен.
Dim TimeToRun 'глобальная переменная, где хранится следующее время запуска
'это главный макрос
Sub MyMacro()
Application.Calculate 'пересчитываем книгу
ActiveWorkbook.Save 'сохраняет книгу
Call NextRun 'запускаем макрос NextRun для назначения след.времени запуска
End Sub
'этот макрос назначает время следующего запуска главного макроса
Sub NextRun()
TimeToRun = Now + TimeValue("00:00:59") 'прибавляем к текущему времени 3 сек
Application.OnTime TimeToRun, "MyMacro" 'назначаем следующий запуск
End Sub
'макрос для запуска последовательности повторений
Sub Start()
Call NextRun
End Sub
'макрос для остановки последовательности повторений
Sub Finish()
Application.OnTime TimeToRun, "MyMacro", , False
End Sub
Необходимо обновлять все запросы и подключения (я так понимаю это ActiveWorkbook.RefreshAll)
Далее сохранять файл.
Сделать цикличность выполнения макроса.
Есть несколько оговорок - изначально я сделал просто обновление запросов и сохранение книги, но в этом случае эксель не успевает обновить запросы перед сохранением, так что я предполагаю нужно сделать задержку между обновлением запросов и сохранением книги.
Вот что у меня уже есть. Этот макрос сохраняет книгу каждую минуту. Хотелось бы дополнить обновлением запросов. Буду очень признателен.
Dim TimeToRun 'глобальная переменная, где хранится следующее время запуска
'это главный макрос
Sub MyMacro()
Application.Calculate 'пересчитываем книгу
ActiveWorkbook.Save 'сохраняет книгу
Call NextRun 'запускаем макрос NextRun для назначения след.времени запуска
End Sub
'этот макрос назначает время следующего запуска главного макроса
Sub NextRun()
TimeToRun = Now + TimeValue("00:00:59") 'прибавляем к текущему времени 3 сек
Application.OnTime TimeToRun, "MyMacro" 'назначаем следующий запуск
End Sub
'макрос для запуска последовательности повторений
Sub Start()
Call NextRun
End Sub
'макрос для остановки последовательности повторений
Sub Finish()
Application.OnTime TimeToRun, "MyMacro", , False
End Sub