Страницы: 1
RSS
Обновление данных Power Query на защищенной странице, Как обновить запрос PQ на защищенной странице?
 
Друзья, добрый день!

Имеется таблица, которая собирается при помощи Power Query из двух других таблиц (справочников) в этом же файле. Лист на котором содержится эта таблица должен быть защищен - обязательное условие. Но если защитить лист, то пропадает возможность обновлять запрос PQ. Конечный пользователь пароля не знает, а возможность обновлять запрос PQ у него должна быть.

Пожалуйста, подскажите как можно решить данную коллизию?
Изменено: Anton Bachinin - 03.06.2020 11:52:04
 
Даже если такая возможность и была бы, то если у юзера есть возможность обновлять запрос, то есть и возможность открывать и смотреть запрос в редакторе, а значит он все равно увидит этот справочник. Внимание вопрос. Зачем тогда это все? Хотите какой-то иллюзорной защиты, используйте VBA, PQ он немного не про это. И еще имейте в виду одну мудрость, если юзер дурак, то от него и скрывать ничего не надо, он все равно сам все поломает. А если он умный, то при желании вскроет любые ваши справочники парой-тройкой запросов в гугле.
Изменено: PooHkrd - 03.06.2020 12:10:56
Вот горшок пустой, он предмет простой...
 
Спасибо за ответ! Смысл не совсем в том чтобы скрыть справочники. Да и то что excel файл вскрывается подручными средствами примерно за 40 секунд ни для кого не секрет. Защищенный лист - это требование (читай ТЗ). В зависимости от того какие поля в справочнике пользователь пометит как "Важно" сформируется таблица  для дальнейшей работы. Это итеративный процесс.

И вот задача в том чтобы эта таблица формировалась даже при залоченном листе.
Похоже и вправду единственный вариант это VBA, а жаль
 
Цитата
Anton Bachinin написал:
как можно решить данную коллизию?
симбиоз :) Путь юзер вводит нужные данные и жмет кнопку. А кнопка будет снимать защиту с листа, обновлять запрос и ставить защиту обратно. Все.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Спасибо за ответы! Подскажите пожалуйста по макросу. Проблема в том что через отладчик работает отлично, а через кнопку почему-то лочит страницу раньше чем происходит обновление всех связей. Код ниже

Sub sheet_Upd()

   Sheets("Sheet1").Unprotect "123"
   
   For Each objConnection In ThisWorkbook.Connections
       objConnection.Refresh
   Next

   Sheets("Sheet1").Protect "123", True, True
   
End Sub


UPD: Разобрался, просто нужно было отключить фоновое обновление.
Всем спасибо за участие!
Изменено: Anton Bachinin - 03.06.2020 13:23:24
 
Вернусь к теме. Решил скорректировать макрос и использовать другой подход
Код
Private Sub workbook_open()

    Const Pwd = "123"
    
    With Sheets("Лист1")
     .Protect Password:=Pwd, AllowFiltering:=True, Scenarios:=False, UserInterfaceOnly:=True
    End With

End Sub

Private Sub connections_upd()
    
    For Each objConnection In ThisWorkbook.Connections
        objConnection.Refresh
    Next
    
End Sub

Есть 2 проблемы:
  1. При вызове connections_upd у меня вылетает ошибка 400, но только в том случае если сохранить файл предварительно сняв защиту c Лист1. Если открыть файл где Лист1 залочен заранее, то проблема не возникает
  2. При первом вызове connections_upd макрос отрабатывает секунд за 7, а при повторном за считанные мгновения.
Подскажите с чем это может быть связано и как решить?

UPD по вопросу #1: сообщение об ошибке 400 выскакивает без какой либо системы или я ее не вижу.  
Изменено: Anton Bachinin - 04.06.2020 17:38:13
 
Anton Bachinin,
про первый вопрос не подскажу, а про второй легко: при первом вызове запроса сначала загружаются в память компоненты .NET. Соответственно при повторном выполнении запроса этого не происходит, а сразу обновляется запрос.
Вот горшок пустой, он предмет простой...
 
PooHkrd, спасибо! хоть по этому поводу переживать не стану.  
Страницы: 1
Наверх