Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/ПОДОЖДАТЬ выполнение запросов - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
ПОДОЖДАТЬ выполнение запросов
Невилл Дата: Понедельник, 04.09.2017, 19:49 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 79
Репутация: 2 ±
Замечаний: 0% ±

Excel 2007
Привет всем.
Есть книга с 10 запросами к другим файлам через Power Query.
Нужно добавить кнопку с макросом для их обновления. Пока использую просто ThisWorkbook.RefreshAll, но возможно потом придется выполнять отдельно обновлять одну из категорий запросов.

Сейчас мне нужно замерить точное время на выполнение всех этих запросов и сообщить его в msgbox'е пользователю. Проблема в том, что после строки RefreshAll этот замер завершается, а сами запросы продолжают себе обновляться.
Как можно заставить макрос сначала "подождать" выполнение всех запросов, а уже потом переходить к новой строке макроса?
В Сети пока роюсь, но метод с DoEvents не дал результата, а громоздкое решение с пользовательскими классами не понял еще... Может, есть что-то полегче?
 
Ответить
СообщениеПривет всем.
Есть книга с 10 запросами к другим файлам через Power Query.
Нужно добавить кнопку с макросом для их обновления. Пока использую просто ThisWorkbook.RefreshAll, но возможно потом придется выполнять отдельно обновлять одну из категорий запросов.

Сейчас мне нужно замерить точное время на выполнение всех этих запросов и сообщить его в msgbox'е пользователю. Проблема в том, что после строки RefreshAll этот замер завершается, а сами запросы продолжают себе обновляться.
Как можно заставить макрос сначала "подождать" выполнение всех запросов, а уже потом переходить к новой строке макроса?
В Сети пока роюсь, но метод с DoEvents не дал результата, а громоздкое решение с пользовательскими классами не понял еще... Может, есть что-то полегче?

Автор - Невилл
Дата добавления - 04.09.2017 в 19:49
_Igor_61 Дата: Понедельник, 04.09.2017, 20:49 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 504
Репутация: 90 ±
Замечаний: 0% ±

Excel 2007
Здравствуйте! Может, сделать несколько разных макросов, чтобы они запускались последовательно? Пока замер совершается, следующий макрос не запущен, как с замером покончено - пошел следующий макрос
 
Ответить
СообщениеЗдравствуйте! Может, сделать несколько разных макросов, чтобы они запускались последовательно? Пока замер совершается, следующий макрос не запущен, как с замером покончено - пошел следующий макрос

Автор - _Igor_61
Дата добавления - 04.09.2017 в 20:49
Невилл Дата: Вторник, 05.09.2017, 06:54 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 79
Репутация: 2 ±
Замечаний: 0% ±

Excel 2007
Если упростить задачу:
Пользователь жмет "Данные"-"Обновить все".
Как можно ПО ЗАВЕРШЕНИИ этой команды вывести на экран сообщение?

Игорь, к сожалению, я не понял, как именно это реализовать.

Вот мой код таймера для замера времени (стандартный):
[vba]
Код
'ПРОЦЕДУРА: ТАЙМЕР
Sub Timer_Start()
    m_datTimer = Time
End Sub
    
Sub Timer_Stop()
    m_datTimer = Time - m_datTimer
    MsgBox "Завдання виконано!" & vbNewLine & "Час: " & m_datTimer, vbInformation, "Замір часу"
End Sub

[/vba]

А так я вызываю свою процедуру обновления запросов:
[vba]
Код
Sub Calculate_For_Vacations()
    OptimizeCode_Begin
    Timer_Start
    ThisWorkbook.RefreshAll
    Timer_Stop
    OptimizeCode_End
End Sub
[/vba]
 
Ответить
СообщениеЕсли упростить задачу:
Пользователь жмет "Данные"-"Обновить все".
Как можно ПО ЗАВЕРШЕНИИ этой команды вывести на экран сообщение?

Игорь, к сожалению, я не понял, как именно это реализовать.

Вот мой код таймера для замера времени (стандартный):
[vba]
Код
'ПРОЦЕДУРА: ТАЙМЕР
Sub Timer_Start()
    m_datTimer = Time
End Sub
    
Sub Timer_Stop()
    m_datTimer = Time - m_datTimer
    MsgBox "Завдання виконано!" & vbNewLine & "Час: " & m_datTimer, vbInformation, "Замір часу"
End Sub

[/vba]

А так я вызываю свою процедуру обновления запросов:
[vba]
Код
Sub Calculate_For_Vacations()
    OptimizeCode_Begin
    Timer_Start
    ThisWorkbook.RefreshAll
    Timer_Stop
    OptimizeCode_End
End Sub
[/vba]

Автор - Невилл
Дата добавления - 05.09.2017 в 06:54
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2026 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!