Если вы уже начали использовать в работе инструменты бесплатной надстройки Power Query в Microsoft Excel, то очень скоро столкнётесь с одной узкоспециальной, но весьма частой и надоедливой проблемой, связанной с постоянно ломающимися ссылками на исходные данные. Суть проблемы в том, что если в своём запросе вы ссылаетесь на внешние файлы или папки, то Power Query жёстко прописывает абсолютный путь к ним в тексте запроса.
У вас на компьютере всё работает прекрасно, но если вы решите отправить файл с запросом своим коллегам, то их ждёт разочарование, т.к. у них на компьютере путь к исходным данным уже другой, и наш запрос работать не будет. Что же сделать в такой ситуации? Давайте разберемся.
Вы показали путь, когда этот самый путь пользователю надо настраивать. Вероятно, есть и другой способ... когда не надо. При условии что все данные лежат в одной папке, как это часто и бывает.
1) Для этого на втором листе книги, куда загружаем данные, в ячейку A1, например, надо записать формулу:
которая вернет путь к файлу активной книги, и присвоить этой ячейке какое-то имя: например, "FilePath". Примечание: в примере ниже использованы файл данных с именем "Data.xlsx" и произвольный путь. 2) При редактировании M-кода запроса в Power Query следует заменить:
строку Источник = Excel.Workbook(File.Contents("D:\Informatics\Office\Excel\UserData\Data.xlsx"), null, true),
И всё. Больше никаких забот. Файл обработки данных и сам файл с данными храним в одной папке, где угодно. Перетащите свою папку в другое место... Измените имя папки...
Однако, это способ, хотя и удобен в большинстве случаев, не позволяет изменять имя файла (только путь). В Вашем же примере можно менять путь к файлу вместе с именем самого файла с данными. Очевидно, оба способа имеют право на жизнь.
Вероятно, есть и другой способ... когда не надо. При условии что все данные лежат в одной папке, как это часто и бывает.
1) Для этого на втором листе книги, куда загружаем данные, в ячейку A1, например, надо записать формулу:
=ЛЕВСИМВ(ЯЧЕЙКА("имяфайла";$A$1);НАЙТИ("[";ЯЧЕЙКА("имяфайла";$A$1);1)-1)
которая вернет путь к файлу активной книги, и присвоить этой ячейке какое-то имя: например, "FilePath".
Примечание: в примере ниже использованы файл данных с именем "Data.xlsx" и произвольный путь.
2) При редактировании M-кода запроса в Power Query следует заменить:
строку
Источник = Excel.Workbook(File.Contents("D:\Informatics\Office\Excel\UserData\Data.xlsx"), null, true),
на строки
FilePath = Excel.CurrentWorkbook(){[Name="FilePath"]}[Content]{0}[Column1],
FullPath = FilePath & "Data.xlsx",
Источник = Excel.Workbook(File.Contents(FullPath), null, true),
И всё. Больше никаких забот. Файл обработки данных и сам файл с данными храним в одной папке, где угодно.
Перетащите свою папку в другое место... Измените имя папки...
Однако, это способ, хотя и удобен в большинстве случаев, не позволяет изменять имя файла (только путь). В Вашем же примере можно менять путь к файлу вместе с именем самого файла с данными.
Очевидно, оба способа имеют право на жизнь.