Страницы: 1
RSS
Обновление запросов и подключений с последующим сохранением
 
Подскажите, пожалуйста, как можно реализовать следующее:
Необходимо обновлять все запросы и подключения (я так понимаю это 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
 
Estelio Ammen,
для обновления запросов используйте:
Код
For Each oc In ThisWorkbook.Connections        'запоминаем значение обновления в фоне для запроса
        IsBG_Refresh = oc.OLEDBConnection.BackgroundQuery
        'выставляем принудительно ждать завершения запроса
        oc.OLEDBConnection.BackgroundQuery = False
        'обновляем запрос
        oc.Refresh
        'возвращаем обновление в фоне в первоначальное состояние
       oc.OLEDBConnection.BackgroundQuery = IsBG_Refresh
    Next
 
Цитата
написал:
Estelio Ammen,
для обновления запросов используйте:
Код
    [URL=#]?[/URL]       1  2  3  4  5  6  7  8  9      For   Each   oc   In   ThisWorkbook.Connections          'запоминаем значение обновления в фоне для запроса              IsBG_Refresh = oc.OLEDBConnection.BackgroundQuery              'выставляем принудительно ждать завершения запроса              oc.OLEDBConnection.BackgroundQuery =   False              'обновляем запрос              oc.Refresh              'возвращаем обновление в фоне в первоначальное состояние             oc.OLEDBConnection.BackgroundQuery = IsBG_Refresh          Next   
 
Спасибо ВАМ огромное!
Страницы: 1
Наверх