Добрый день, уважаемые
Есть файл xlsx с pq (Power Query) скриптами внутри. Они доставали с гос.сайта инфу и добавляли ее к локальным данным. Все это дело отрабатывало где-то за 15 +/- пару минут
Внезапно для меня формат данных с гос.сайта поменялся. Теперь ту часть кода pq, что доставала данные, пришлось засунуть в VBA (не умеет pq делать такие штуки).
То есть получился такой код:
[CODE][/CODE]
Есть файл xlsx с pq (Power Query) скриптами внутри. Они доставали с гос.сайта инфу и добавляли ее к локальным данным. Все это дело отрабатывало где-то за 15 +/- пару минут
Внезапно для меня формат данных с гос.сайта поменялся. Теперь ту часть кода pq, что доставала данные, пришлось засунуть в VBA (не умеет pq делать такие штуки).
То есть получился такой код:
| Код |
|---|
Sub ProcessAndDownloadExchangeRates() ... тут код, который достает данные ... а затем вызывается выполнение pq-скриптов RefreshAllAndWait End Sub Sub RefreshAllAndWait() ' Запускаем обновление всех запросов Power Query ThisWorkbook.RefreshAll ' Ждем завершения обновления Dim conn As WorkbookConnection Dim allDone As Boolean Do DoEvents ' Позволяет Excel обновить интерфейс allDone = True For Each conn In ThisWorkbook.Connections On Error Resume Next ' Игнорируем ошибки, если свойство Refreshing недоступно If conn.Type = xlConnectionTypeOLEDB Or conn.Type = xlConnectionTypeModel Then If conn.Refreshing Then allDone = False Exit For End If End If On Error GoTo 0 Next conn Loop Until allDone MsgBox "Все запросы Power Query успешно обновлены!", vbInformation End Sub |
VBA-код без вызова обновления pq-скриптов выполняется около минуты. За то с вызовом обновления - около часа. То есть, грубо говоря, pq выполняется этот самый час.
У меня возник вот такой вопрос - почему так происходит? Почему время работы просто pq-запросов и их же, но вызванных через VBA так сильно различается? Машина та же (да, барахло, но работает), скрипты те же (более того, часть кода убрал потому как VBA ее теперь делает), данные те же. А время выполнения столь разительно различается - в 3-4 раза медленнее из-под VBA.
Изменено: - 28.01.2025 09:02:14
(форматирование съехало - поправил)