Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: Пред. 1 2
RSS
Разбор возникающей ошибки при обновлении PQ-запросов из иной книги
 
Максим Зеленский, 1) Стоит ли уточнить то, что много запросов, которые в качестве источника используют другие запросы?
2) Быть может, лучше всего будет, если выполнять запуск обновления ТАБЛИЦ-результатов запросов, а не сами запросы?
Улыбнись.
 
Я за п.2.
F1 творит чудеса
 
Максим Зеленский, будьте добры, укажите на ошибку, пожалуйста. Не обновляются таблицы таким кодом.

Код
        ThisWorkbook.Range("ФормаОтчета").ListObject.QueryTable.Refresh BackgroundQuery:=False
    ThisWorkbook.Range("СредняяСтоимость").ListObject.QueryTable.Refresh BackgroundQuery:=False
    ThisWorkbook.Range("ВсеЦены").ListObject.QueryTable.Refresh BackgroundQuery:=False
    ThisWorkbook.Range("СуммыПоКаждойКарте").ListObject.QueryTable.Refresh BackgroundQuery:=False

Изменено: falmrom - 21 Авг 2019 12:21:31
Улыбнись.
 
Попробуйте сделать пожестче:
ThisWorkbook.Sheets("Sheet1").ListObjects("TableName").Refresh .....
Пишу с телефона по памяти, но разберетесь, я думаю
F1 творит чудеса
 
Максим Зеленский, фиаско.

Воспользовался Вашим предложением :
Код
ThisWorkbook.Sheets(2).ListObjects("ФормаОтчета").Refresh
MsgBox 123

msgbox Появляется ДО окончания обновления.

В общем, думаю, то, что делаю через PQ, реализую чисто циклами на VBA. Так будет проще.
Спасибо всем за советы, подсказки.
Изменено: falmrom - 21 Авг 2019 12:39:40
Улыбнись.
 
Максим Зеленский, куча циклов устпает по скорости работы POWER QUERY или, напротив, циклы VBA будут быстрее ? Пишу грамотно и коротко, с обозначением переменных
Улыбнись.
 
Попробуйте так:
Код
With ThisWorkbook.Connections("Имя подключения")
.OLEDBConnection.BackgroundQuery = False
.Refresh
End With
Изменено: ctacon - 21 Авг 2019 13:54:45
 
ctacon, однообразно
Улыбнись.
 
falmrom, BackgroundQuery:=False и QueryTable не забыли добавить? У меня не появляется раньше. Собственно говоря, я так замеряю скорость выполнения запроса:
Код
t = Timer()
ThisWorkbook.Sheets(2).ListObjects("ФормаОтчета").QueryTable.Refresh BackgroundQuery:=False
Debug.Print Timer()-t
Изменено: Максим Зеленский - 23 Авг 2019 17:42:16
F1 творит чудеса
 
Добрый вечер! А в свойствах запроса пробовали отключить фоновое обновление? У меня была аналогичная проблема: с помощью vba обновлял запрос, который формировал список вложений для почтовой рассылки. Обновление запроса не завершалось до завершения работы макроса, хотя должно было занимать не больше секунды. Соответственно, письма отправлялись без вложений. Я отключил фоновое обновление в свойствах запроса и всё заработало, как нужно, т.е. макрос переходил к следуещему шагу только после окончания обновления запроса PQ
Страницы: Пред. 1 2
Читают тему (гостей: 1)
Наверх