Страницы: 1
RSS
Power Query: автоматизация пути источника файла
 
Здравствуйте.

Имеется файл на сетевом диске. Он имеет следующую структуру названия: [неизменное наименование файла]_Октябрь_2019.xls. Каждый месяц название файла изменяется - месяц и год. Каждый месяц приходится обновлять путь к файлу. При запросе через Poweq Query идет следующая строчка к источнику:
Код
Источник = Excel.Workbook(File.Contents("\\[неизменное наименование файла]_Октябрь_2019.xls"), null, true)
Вопрос - можно ли автоматизировать каким-либо образом путь к файлу, зная, что есть неизменная составная часть наименования файла и есть изменяемая часть (месяц и год), чтобы каждый месяц не обновлять путь к файлу?
Проблема в том, что таких файлов много и каждое начало месяца их необходимо обновлять.

Благодарю за помощь.
 
Знакома ли Вам эта статья?
Параметризация путей к данным в Power Query
 
IKor, я правильно понимаю, что мне главное автоматизировать путь к файлу (и его имя) в отдельной табличке, и, собственно, все?

Учитывая, что Power Query работает по принципу - все, что отфильтровано, удаляется; я предполагал, что можно сделать запрос к папке, отфильтровать по столбцу с именем командой "содержит" и открыть оставшийся файл. Но в такой последовательности, в итоге, в расширенном редакторе все равно прописывается конкретный пусть к файлу с его названием. Думал, может есть способ открыть оставшийся отфильтрованный файл вне зависимости от его имени?
 
EvgeniyLFC, вот такая формула автоматизирует формирование вашего пути исходя из сегодняшней даты:
Код
= "[неизменное наименование файла]_" & DateTime.ToText(DateTime.LocalNow(),"MMMM") & "_" & DateTime.ToText(DateTime.LocalNow(),"yyyy") & ".xls"
Вот горшок пустой, он предмет простой...
 
PooHkrd, отличный вариант.
Предполагаю, что 1 ноября он уже будет ругаться, пока файл не переименуешь, но все равно лучше, чем есть. Благодарю!
 
EvgeniyLFC, не обязательно, можно поставить условие что ищем файл с таким именем, если такого нет, то ищем на месяц назад. Было бы желание.
Вот горшок пустой, он предмет простой...
 
PooHkrd, а это вариант. Тогда прошу последней подсказки - с каким условием я сравниваю название файла?
То есть if путь к файлу [неизменное название файла]&текущий месяц&текущий год = ?! then ... дальше вроде понятно.
Изменено: EvgeniyLFC - 21.10.2019 17:38:10
 
можно пробовать сделать, чтобы выбирался последний измененный файл с этим именем. у меня обычно это работало.
Код
let
    Источник = Folder.Files("C:\имя папки"),
    #"Сортированные строки" = Table.Sort(Источник,{{"Date accessed", Order.Descending}}),
    #"Строки с примененным фильтром" = Table.SelectRows(#"Сортированные строки", each ([Extension] = ".xlsx")),
    #"Строки с примененным фильтром1" = Table.SelectRows(#"Строки с примененным фильтром", each Text.Contains([Name], "_20")),
    #"Строки с примененным фильтром2" = Table.SelectRows(#"Строки с примененным фильтром1", let latest = List.Max(#"Строки с примененным фильтром1"[Date accessed]) in each [Date accessed] = latest)
in
    #"Строки с примененным фильтром2"
 
EvgeniyLFC, не совсем так, вам же надо проверить наличие файла, т.е. пробуем открыть файл с текущим месяцем, и если ловим ошибку, то пробуем с предыдущим, примерно так:
Код
= try Excel.Workbook(File.Contents("\\[неизменное наименование файла]_Ноябрь_2019.xls"), null, true) 
    otherwise Excel.Workbook(File.Contents("\\[неизменное наименование файла]_Октябрь_2019.xls"), null, true)
Вот горшок пустой, он предмет простой...
 
EvgeniyLFC, а если месяц и год в именованной ячейке прописывать? подойдет так?
 
artyrH, а что это даст если из ячейки вы не можете проверить есть ли файл с таким именем в наличии? Тогда уж лучше все в PQ городить.
Вот горшок пустой, он предмет простой...
 
PooHkrd, ааа, метод работает, круто, огромное спасибо!
Страницы: 1
Наверх