Страницы: 1
RSS
Обновление запросов PowerQuery по очереди.
 
Добрый день.
Есть ряд зависимых запросов (Запрос1, Запрос2, Запрос3)
Нужно что бы запросы обновлялись по очереди.
Запустился Запрос1, дождаться окончания обновления, обновить Запрос2, дождаться окончания обновления, обновить Запрос3
Помогите пожалуйста.
 
Буквально несколько тем ниже вопрос, где похожий вопрос решают через VBA https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=1&TID=130064&TITLE_SEO=130064-vypolnit-kod-posle-obnovleniya-zaprosov-pq
Программный код, как и яды, лучше тестировать по капельке
Люблю изобретать велосипеды с колесами произвольной формы
 
Попробовл использовать vba код из указанной темы, выскакивает ошибка Subscript out of range. Можете подправить?
И как в последующем обновить следующий запрос после обновления первого еще раз прописать код

set oc = ThisWorkbook.Connections("test1")
IsBG_Refresh = oc.OLEDBConnection.BackgroundQuery
oc.OLEDBConnection.BackgroundQuery = False
oc.Refresh
oc.OLEDBConnection.BackgroundQuery = IsBG_Refresh

только для test1.
 
Доброе время суток
Цитата
kolyaya написал:
Subscript out of range
Нет там такого подключения. Достаточно провести простой эксперимент
Код
Public Sub PrintConnectionNames()
    Dim p As WorkbookConnection
    For Each p In ThisWorkbook.Connections
        Debug.Print p.Name
    Next
End Sub

Чтобы в этом убедиться :)
Цитата
Запрос — test
Запрос — test1
 
Спасибо, заработало.
Вроде по очереди обновляются. Буду пробовать в оригинальных файлах.
 
У вас очевидно, как и у меня, Excel 365. В нём убрали стандартную кнопку подключения, где можно было сразу посмотреть что как называется - заменили панелью. Поэтому сейчас, чтобы увидеть правильные названия, то либо скрипт выше, либо по кнопке "Существующие подключения".
 
А можно вариант с поочередным обновлением запросов из списка?
Типа как то так (не работает):
Код
Sub RefreshPQ2()
    
    Dim ws As Worksheet, qt As QueryTable, oc As Object, IsBG_Refresh As Boolean
    Dim i As Long
    spisok = ("Запрос — test";"Запрос — test1";"Запрос — test3";"Запрос — test2")
    
  
    For i = 1 To 4
       
       Set oc = ThisWorkbook.Connections(spisok(i))
       IsBG_Refresh = oc.OLEDBConnection.BackgroundQuery
       oc.OLEDBConnection.BackgroundQuery = False
       oc.Refresh
       oc.OLEDBConnection.BackgroundQuery = IsBG_Refresh
    Next
End Sub

 
Цитата
Михаил Л написал:
spisok = ("Запрос — test";"Запрос — test1";"Запрос — test3";"Запрос — test2")
А почему вы решили, что это должно работать?
Код
Sub RefreshPQ2()
    
    Dim ws As Worksheet, qt As QueryTable, oc As Object, IsBG_Refresh As Boolean
    Dim i As Long, spisok
    spisok = Array("Запрос — test", "Запрос — test1", "Запрос — test3", "Запрос — test2")
    
  
    For i = LBound(spisok) To UBound(spisok)
       
       Set oc = ThisWorkbook.Connections(spisok(i))
       IsBG_Refresh = oc.OLEDBConnection.BackgroundQuery
       oc.OLEDBConnection.BackgroundQuery = False
       oc.Refresh
       oc.OLEDBConnection.BackgroundQuery = IsBG_Refresh
    Next
End Sub
 
Цитата
Андрей VG написал:
это должно работать?
Не должно работать. Я только набросал для понимания того, что мне надо. Удивило что я с этим угадал -  (spisok(i))
Спасибо большое
 
kolyaya, Здравствуйте, столкнулась с таким же вопросом, но совершенно не разбираюсь в языке VBA
Можете пожалуйста помочь готовым решением или помочь разобраться?
 
"Кончита ждала Резанова тридцать пять лет..."
Цитата
Профиль
kolyaya
Пользователь
Сообщений: 160
Баллов: 0
Регистрация: 17.02.2018
Последний визит: 06.05.2022 20:50:54
Пришелец-прораб.
 
Цитата
Irina Bogdanova написал:
помочь готовым решением

Как обновить запросы Power Query(и не только) в указанном порядке?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий(The_Prist) Щербаков, Спасибо!
Страницы: 1
Наверх