Страницы: 1
RSS
Power query, excel, при обработке файлов из папки, зачем-то открывает некоторые из них., Вопрос по excel
 
Приветствую!
Что б не получить по шапке, решил создать тему в курилке. Правила читал, поиском искал и в гугле, и в яндексе и по форуму. Может я глупый, но ничего не нашёл.
Суть:
Есть процедура написанная в power query, она лезет в папку, вытаскивает данные из всех файлов этой папки и подпапок.
С какой-то периодичностью, в процессе работы, внезапно, excel открывает файлы, которые бы должен обрабатывать фоном, а не открывать.
Такое уже бывало, но я так и не разобрался в чём причина и не нашёл закономерностей в появлении этого косяка.
Из-за этого, у меня ломается один запрос, так как он ссылается на ячейку с адресом родительского файла(N:\Users...), а формула в этой ячейке, отчего-то (тоже, кстати, какого хрена?) начинает показывать адрес того открытого файла(G:\USERS...), хотя никакого отношения к нему не имеет. А дальше "снежный ком"
Вопросы:
Кто-то встречался с непроизвольными открытиями читаемых файлов при работе PQ?
Как это лечится?

Примеров не прилагаю, так-как там вся информация примерно "коммерческая тайна", а сделать обезличеную процедуру из пары десятков запросов - хлопотное дело.
 
Цитата
InodKo написал:
процедура написанная в power query,
не припомню, чтобы там был хоть один метод, который бы открывал файлы напрямую. Хоть в фоне, хоть в открытую. Точно про PQ речь? Есть хотя бы текст этого запроса?
Цитата
InodKo написал:
а формула в этой ячейке,
может это формула ЯЧЕЙКА? У неё есть особенности - если не указать второй аргумент, то при пересчете всегда будет информация с активного листа и файла. Подробнее здесь: Как получить имя листа формулой
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Формула - пол беды (ввёл второй аргумент, спасибо за подсказку), а вот отчего открывается файл из папки - вопрос.
Открывается не каждый раз, открываются не всегда одни и те-же файлы... Есть подозрение, что кто-то работает с этими файлами, и PQ провоцирует их открытие С другой стороны, у всех файлов дата изменения - 29/11, если кто-то и ковыряется, то ридонли.
Текст.... Есть. там 11 запросов, 6 можно исключить, в каком из оставшихся 5 это происходит - непонятно...
Это не прямой код в PQ, точно. Потому как в самом начале, когда я эту всю чепуху городил - такой фигни не было. Да и встречается она не каждый раз. Сегодня вот - целый день кровь пьёт, а до того - неделю не встречалась.
Если я правильно понимаю, то открываются файлы при работе вот этого кода (тапками не кидать, рисую как умею):

Код
let
  Источник = Folder.Files("G:..."),
  SelectRowsTmp = Table.SelectRows(Источник, each not Text.Contains([Name], "$")),
  SelectRowsXl = Table.SelectRows(SelectRowsTmp, each Text.Contains([Extension], "xl")),
  SplitColumnXl = Table.SplitColumn(
    SelectRowsXl,
    "Name",
    Splitter.SplitTextByDelimiter(".", QuoteStyle.Csv),
    {"Name", "Name.1"}
  ),
  JoinN = Table.NestedJoin(
    SplitColumnXl,
    {"Name"},
    #"Планограммы исходники (2)",
    {"Планограмма"},
    "Планограммы исходники (2)",
    JoinKind.LeftOuter
  ),
  ExpandN = Table.ExpandTableColumn(
    JoinN,
    "Планограммы исходники (2)",
    {"Планограмма"},
    {"Планограмма"}
  ),
  SelectRowsNoNullP = Table.SelectRows(ExpandN, each ([Планограмма] <> null)),
  SelectColumnsCN = Table.SelectColumns(
    SelectRowsNoNullP,
    {"Content", "Name", "Планограмма", "Date modified"}
  ),
  AddColumnSheetLst = Table.AddColumn(
    SelectColumnsCN,
    "Пользовательский",
    each Table.SelectRows(Excel.Workbook([Content]), each [Name] = "Списком")
  ),
  ExpandT = Table.ExpandTableColumn(
    AddColumnSheetLst,
    "Пользовательский",
    {"Name", "Data"},
    {"Name.1", "Data"}
  ),
  SelectRowsSheetLst = Table.SelectRows(ExpandT, each ([Name.1] = "Списком")),
  AddColumnSL = Table.AddColumn(SelectRowsSheetLst, "Строк", each Table.RowCount([Data])),
  ExpandD = Table.ExpandTableColumn(
    AddColumnSL,
    "Data",
    {
      "Column1",
      "Column2",
      "Column3",
      "Column4",
      "Column5",
      "Column6",
      "Column7",
      "Column8",
      "Column9",
      "Column10"
    },
    {
      "Column1",
      "Column2",
      "Column3",
      "Column4",
      "Column5",
      "Column6",
      "Column7",
      "Column8",
      "Column9",
      "Column10"
    }
  ),
  AddColumnL = Table.AddColumn(
    ExpandD,
    "Длина1234",
    each Text.Length(Text.From([Column1]))
      + Text.Length(Text.From([Column2]))
      + Text.Length(Text.From([Column3]))
      + Text.Length(Text.From([Column4]))
  ),
  SelectRowsNoNullL = Table.SelectRows(AddColumnL, each ([Длина1234] <> null)),
  ReplaceSp = Table.ReplaceValue(SelectRowsNoNullL, " ", "", Replacer.ReplaceText, {"Column3"}),
  AddColumnSla = Table.AddColumn(ReplaceSp, "Слеш", each Text.Split([Column3], "/")),
  ExpandLSla = Table.ExpandListColumn(AddColumnSla, "Слеш"),
  DuplicateSla = Table.DuplicateColumn(ExpandLSla, "Слеш", "Копия Слеш"),
  TypesSla = Table.TransformColumnTypes(DuplicateSla, {{"Копия Слеш", Int64.Type}}),
  RemoveRError = Table.RemoveRowsWithErrors(TypesSla, {"Копия Слеш"}),
  SelectColumnsNPDN = Table.SelectColumns(
    RemoveRError,
    {
      "Name",
      "Планограмма",
      "Date modified",
      "Name.1",
      "Column1",
      "Column2",
      "Column3",
      "Column4",
      "Слеш"
    }
  )
in
  SelectColumnsNPDN

Изменено: InodKo - 21.12.2022 11:55:50
 
Впервые слышу, чтобы Power Query открывал Excel(именно открывал в приложении, а не считывал). Возможно, проблема не только в Power Query или вообще не в ней. Но могу ошибаться - просто раньше с таким не сталкивался.
Приведенный выше код обращается к файлам, да, но никогда ранее Folder.Files не открывал файлы в привычном нам понимании этого открывания. А других методов обращения к закрытым файлам у Вас в коде не наблюдается. Excel.Workbook не то. Если по простому, то данная функция преобразует бинарный код файла в привычный для Excel вид.
Изменено: Дмитрий(The_Prist) Щербаков - 30.11.2022 22:29:06
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Вот. И гугл об этом не слышал. А у меня в паре запросов такая фигня происходит.
Причём не каждый раз, и только в запросах, которые обращаются к общим папкам на этом сетевом диске.


Спасибо за участие! Если поймаю эту тварь - поделюсь опытом.
 
Цитата
написал:
Если поймаю эту тварь...
А такое только на этой машине?
 
Вы запускаете обновление запроса из кода VBAили вручную? Если из VBA, то код макроса нужно посмотреть.
Может на открытие файла с запросом повешен какой-то макрос с Application.Ontime?
 
Такая же проблема, запрос сделан на папку и запрашивает определённый последний актуальный файл, найдя его во всех подпапках.
При написании кода были определённые подтормаживания запроса, он выполнился в редакторе. В боевом обновлении, открылся файл из которого вытягивается информация но не полностью, а в зависшем состоянии.
 
Михаил Горшков, варианты от Дмитрий(The_Prist) Щербаков и Бахтиёр проверьте и отпишитесь
Изменено: Jack Famous - 17.01.2023 19:03:11
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Чем закончилась история?
Насколько я понимаю в этих файлах действительно кто-то сидит в момент обновления запроса.  Папка сетевая скорее всего. PQ открывает их все в режиме чтения.
Страницы: 1
Наверх