Страницы: 1
RSS
Обновить запрос в Power Query и одновременно сводную таблицу на основании запроса
 
Добрый вечер!

Скажите, есть ли макрос, который мог бы обновить и запрос в Power Query и одновременно сводную таблицу на основании запроса PQ ?
 
Loksana, надеюсь вы знаете что надо сначала обновить запросы, а потом сводные
Посмотрите
 
Спасибо, Михаил!
Да, именно сейчас так и делаю, сначала запрос, а потом сводную. Но думала, может есть один макрос.
Ну значит нет (
Изменено: vikttur - 10.10.2021 21:32:04
 
Цитата
Loksana написал:
значит нет
Ну как нет. Вам надо попробовать разобраться с кодом.
Вот так у меня в рабочем файле
Код
Public Wb As Workbook
Sub aaa()
    Set Wb = Workbooks.Open(Filename:="C:\Users\user\Desktop\temp\Отчет по реализации ежедневно.xlsx")
    Sheets("Медпреды_Выполнение плана").Activate
     
    Set oc = ActiveWorkbook.Connections("Запрос — Источник_к_данным")
    IsBG_Refresh = oc.OLEDBConnection.BackgroundQuery
    oc.OLEDBConnection.BackgroundQuery = False
    oc.Refresh
    oc.OLEDBConnection.BackgroundQuery = IsBG_Refresh
        
    Set oc = ActiveWorkbook.Connections("Запрос — Поступление_Сегодня")
    IsBG_Refresh = oc.OLEDBConnection.BackgroundQuery
    oc.OLEDBConnection.BackgroundQuery = False
    oc.Refresh
    oc.OLEDBConnection.BackgroundQuery = IsBG_Refresh
    
    Set oc = ActiveWorkbook.Connections("Запрос — Поступление_за_месяц")
    IsBG_Refresh = oc.OLEDBConnection.BackgroundQuery
    oc.OLEDBConnection.BackgroundQuery = False
    oc.Refresh
    oc.OLEDBConnection.BackgroundQuery = IsBG_Refresh
    
    Set oc = ActiveWorkbook.Connections("Запрос — За месяц")
    IsBG_Refresh = oc.OLEDBConnection.BackgroundQuery
    oc.OLEDBConnection.BackgroundQuery = False
    oc.Refresh
    oc.OLEDBConnection.BackgroundQuery = IsBG_Refresh
    
    Set oc = ActiveWorkbook.Connections("Запрос — За сегодня")
    IsBG_Refresh = oc.OLEDBConnection.BackgroundQuery
    oc.OLEDBConnection.BackgroundQuery = False
    oc.Refresh
    oc.OLEDBConnection.BackgroundQuery = IsBG_Refresh
    
    Set oc = ActiveWorkbook.Connections("Запрос — процент от плана")
    IsBG_Refresh = oc.OLEDBConnection.BackgroundQuery
    oc.OLEDBConnection.BackgroundQuery = False
    oc.Refresh
    oc.OLEDBConnection.BackgroundQuery = IsBG_Refresh
    
    Set oc = ActiveWorkbook.Connections("Запрос — по региону")
    IsBG_Refresh = oc.OLEDBConnection.BackgroundQuery
    oc.OLEDBConnection.BackgroundQuery = False
    oc.Refresh
    oc.OLEDBConnection.BackgroundQuery = IsBG_Refresh
    
    ActiveSheet.PivotTables("Сводная таблица2").PivotCache.Refresh
   ' Sheets("Медпреды_Выполнение плана").PivotTables("Сводная таблица2").PivotCache.Refresh
   ' Sheets("Медпреды_Выполнение плана").Select
    
    Excel.ActiveWorkbook.Save
    Excel.ActiveWorkbook.Close
End Sub
 
Спасибо большое! Сейчас попробую.
 
Дамы и господа, я вас решительно обоих не понимаю. Зачем это все?
Если сводная сделана на основе таблиц, которые являются результатом работы запросов PQ тогда понятно почему, но не понятно зачем так организовано.
Если же у вас сводная основана на внешнем подключении из запроса PQ то все и так обновляется одновременно и запрос и сводная.
Короче, на лицо путаница в терминах.
Есть запрос, это всего лишь набор правил на языке М, который объясняет экселю где взять данные и что с ними сделать
Есть таблица, в которую можно выводить результат запроса. И потом по этой таблице строится сводная. (ЗАЧЕМ так усложнять?)
Есть модель данных, в которую также можно выводить результат запроса
Есть кэш сводной обычной таблицы, в которую можно выводить результат запроса, и тогда сводная обновится вместе с запросом
Есть сводная таблица на основе модели данных Power Pivot, аналогично обновляется одновременно с запросами.
Loksana, какой из вышеперечисленных случаев ваш.
Изменено: PooHkrd - 11.10.2021 09:53:59
Вот горшок пустой, он предмет простой...
 
Цитата
PooHkrd написал:
но не понятно зачем так организовано.
Например, у части адресатов  информации установлен древний эксель без надстроек.
Тогда сводные PP для него будут просто нефункциональными картинками.
 
Xel, повторяю для тех, кто в танке
Цитата
PooHkrd написал:
Есть кэш сводной обычной таблицы, в которую можно выводить результат запроса, и тогда сводная обновится вместе с запросом
Такая сводная будет функционировать и на древнем экселе, только обновить данные не получится, впрочем, как и в описанном вами случае.
Вот горшок пустой, он предмет простой...
 
Цитата
PooHkrd написал:
Зачем это все?
Ну мне экономит телодвижения)
Как было раньше - Открываю отчет и вручную по очереди обновляю запросы, затем сводные.
Как сейчас - В отдельном файле жму кнопку Обновить и лицезрею обновление таблиц.  
 
Цитата
Михаил Л написал:
по очереди обновляю запросы
Это значит "обновляю таблицы на листах, а эти таблицы служат как источник сводной?"
Вот горшок пустой, он предмет простой...
 
PooHkrd, эти запросы выгружают в нужном виде таблицы отчета. А сводная в конце питается данными от запроса, выгружающего данные только в модель. В принципе сводную можно обновить и первой.
 
почитала топик и слегка запуталась
а PQ запросы зачем надо обновлять? (у меня тянут данные из текстовиков, которые сами обновляются 1 раз в день)
я жму в сводной таблице "обновить все" и все свеженькие данные подтягиваются
 
Цитата
PooHkrd написал:
сводная основана на внешнем подключении из запроса PQ
И вправду)
Цитата
Loksana написал:
и запрос в Power Query и одновременно сводную
У вас запрос PQ выгружает данные в Excel?
Или не выгружает в Excel(выбрана галочкой Только подключение), но выгружает в Модель данных. И сводная уже по модели данных. Тогда достаточно ПКМ по сводной -> Обновить.
 
Михаил Л, а если добавить все запросы PQ в модель данных, то по сути можно просто "Обновить ВСЕ" из Power Pivot?)
 
Товарищ Alibekov, можно просто нажать "Обновить все" на вкладке "Данные".
У Вас обновятся и данные в PP, и все сводные из модели.
 
surkenny, да вот почему-то таблички, которые просто стоят "ТОлько подключение" не обновляются. Проверено несколько раз, PQ > 20 подключений.
 
Цитата
Товарищ Alibekov написал:
таблички, которые просто стоят "ТОлько подключение"
и у которых нет галки загрузки в модель и не обновятся никогда :)
Если эти таблички запросы используются для других запросов (которые загружаются куда-то), то они в любом случае будут выполнены для соответствующих запросов заново.

* На всякий случай проверьте, есть ли галка обновлять по "обновить все" в свойствах запросов. Она как раз для этого - обновлять ли соответствующий запрос по этой кнопке.
Изменено: surkenny - 04.10.2023 14:08:50
Страницы: 1
Наверх