Страницы: 1
RSS
Как в запросе Power Query прописать Path путь на 1 папку ниже?)
 
Добрый день уважаемые форумчане!

Кто знает как прописать в Power Query запросе, Path путь на документ не в текущей папке, а на 1 папку ниже?
Честно говоря пробовал всячески прописать путь в текущей папке, однако безуспешно( А про папку ниже вообще молчу)
Возможно ли это?)

Документ с PQ таблицей-----C:\Users\FUAD\Desktop\Cars\FORD.xlsm
Документ для выгрузки  -----C:\Users\FUAD\Desktop\TEST.xlsm

Добавлю и код и файл во вложение.

Спасибо!

Код
ActiveWorkbook.Queries.Add Name:="Table1", Formula:= _
        "let" & Chr(13) & "" & Chr(10) & "    Source = Excel.Workbook(File.Contents(""C:\Users\FUAD\Desktop\TEST.xlsm""), null, true)," & Chr(13) & "" & Chr(10) & "    Table1_Table = Source{[Item=""Table1"",Kind=""Table""]}[Data]," & Chr(13) & "" & Chr(10) & "    #""Changed Type"" = Table.TransformColumnTypes(Table1_Table,{{""МАРКА"", type text}, {""МОДЕЛЬ"", type text}, {""ЦВЕТ"", type text}})," & Chr(13) & "" & Chr(10) & "    #""Filtered Rows"" = Table.SelectRows(#""Changed Type"", " & _
        "each ([МАРКА] = Excel.CurrentWorkbook(){[Name=""Filter""]}[Content]{0}[Column1]))" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & "    #""Filtered Rows"""
 
Ничего не понял.
У вас проблема в VBA или в PQ? В примере запросов не вижу. Откуда запросу брать путь, чтобы опускаться на одну папку ниже? Если папок несколько то в какую опускаться? Или может вам все таки нужно подниматься на уровень выше?
Одни вопросы.
Вот горшок пустой, он предмет простой...
 
Цитата
PooHkrd написал:
Одни вопросы.
Нет нет) В файле все работает) Просто есть необходимость PQ таблице спуститься на одну папку вниз.
Переформулирую пояснение-- Запросу надо выйти с текущей папки) И больше ничего.

Документ где находится PQ таблица-----C:\Users\FUAD\Desktop\Cars\FORD.xlsm
Запрос  -----C:\Users\FUAD\Desktop\TEST.xlsm
 
Запрос работает внутри файла, в котором его написали, он не может изменить путь файла, в котором находится и сохраниться в нем. Это прерогатива VBA.
Если я вас правильно понял.
Изменено: PooHkrd - 21.06.2018 16:06:28
Вот горшок пустой, он предмет простой...
 
Кажется не совсем поняли. Я имел ввиду, что есть готовый запрос PQ, где он ссылается на файл, с помощью конкретного пути. Source = Excel.Workbook(File.Contents(""C:\Users\FUAD\Desktop\TEST.xlsm""), null, true)

Давайте сделаем пример на текущую папку:
К примеру заменить путь
Код
Source = Excel.Workbook(File.Contents(""C:\Users\FUAD\Desktop\TEST.xlsm""), null, true) 

на
Код
Source = Excel.Workbook(File.Contents(Activeworkbook.Path & ""\""), null, true) 

В интернете нашел пару ссылок где есть PQ с похожим прописанным запросом. Такой путь не работает( Пробовал и по другому, однако безуспешно(
Но если получается сделать выгрузку с файла, которой в той же папке, то возможно ли на папку ниже?
 
при:
C:\Users\FUAD\Desktop\Cars\FORD.xlsm
C:\Users\FUAD\Desktop\TEST.xlsm

тогда путь к FORD.xlsm
Path = "C:\Users\FUAD\Desktop\Cars"
а путь к TEST.xlsm
path & "\..\TEST.xlsm"
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Fuad1992 написал:
Кажется не совсем поняли. Я имел ввиду, что есть готовый запрос PQ, где он ссылается на файл, с помощью конкретного пути. Source = Excel.Workbook(File.Contents(""C:\Users\FUAD\Desktop\TEST.xlsm""), null, true)
Отлично, так в чем проблема откусить от него кусок справа до слэша через
Код
Text.BeforeDelimiter("C:\Users\FUAD\Desktop\TEST.xlsm", "\", {0, RelativePosition.FromEnd})
, после чего приклеить слэш, имя файла и обращаться к подредактированному пути?
Вот горшок пустой, он предмет простой...
 
Цитата
Ігор Гончаренко написал:
path & "\..\TEST.xlsm"
Спасибо за отзыв
Не совсем понял куда его писать(
 
Цитата
PooHkrd написал:
после чего приклеить слэш, имя файла и обращаться к подредактированному пути?
Знаете как, чтобы в запросе вообще не было C:\Users\FUAD
Возможно так?
 
Fuad1992, я вообще не понимаю зачем такие извращения? Вы же генерите запрос макросом, так втыкайте туда сразу тот путь который нужно. Зачем нужно в запрос передавать путь, который в запросе еще и обрабатывать внутренними функциями. Вот хоть убейте не виже в этих манипуляциях ни малейшего смысла.
Вы можете описать общую задачу что у вас в исходных данных, и что нужно получить в запросе, а не тот путь решения который вам кажется верным? Тогда я увижу общую картину и мне будет понятнее как вам помочь. Сейчас я вижу что вы придумали какую-то химеру с непонятными целями.
Вот горшок пустой, он предмет простой...
 
Цитата
Fuad1992 написал:
чтобы в запросе вообще не было C:\Users\FUAD
используйте
path & "\..\TEST.xlsm"
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
PooHkrd написал:
какую-то химеру с непонятными целями
Уважаемый PooHkrd) Дело в том что это будет работать не на одном Пк, а на многих. Из-за того что есть необходимость посылать этот документ нашим партнёрам, я не могу для каждого из них прописывать путь(( А PQ таблицу я добавил в качестве отчетов.
И честно говоря это всего лишь пример) Реальная химера это настоящий файл) У меня от него будет опухоль)
Если не получается ничего страшного) Попытаюсь найти альтернативу
 
Цитата
Ігор Гончаренко написал:
path & "\..\TEST.xlsm"
Можете полный Sourse написать если вам не сложно?
 
допустим у Вас есть два Файл
1. ХЗ\Cars\Ford.xlsm
и
2. ХЗ\Test.xlsm
где ХЗ - начальная часть пути к ним

присвоим: Fpath = whisworkbook.path

если whisworkbook - это 1-й файл, путь к 2 записывается так:
Fpath & "\..\TEST.xlsm"
если whisworkbook - это 2-й файл, путь к 1 записывается так:
Fpath & "\Cars\Ford.xlsm"
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Если вы хотите запросом считывать текущую папку местоположения файла с запросом и подниматься на один уровень вверх, то сам PQ так не умеет. Здесь вам потребуется либо формировать путь при помощи макроса, либо в файле (если нужно, на скрытом листе) прописать путь при помощи формулы Excel ЯЧЕЙКА, поименовать эту ячейку с адресом в диспетчере имен и тащить в запрос уже адрес из этой ячейки. Но этот вариант не сработает если файл откроют с выключенным автопересчетом формул.
Вот горшок пустой, он предмет простой...
 
Цитата
Ігор Гончаренко написал:
Fpath & "\Cars\Ford.xlsm
Не получилось(
 
Цитата
PooHkrd написал:
прописать путь при помощи формулы Excel ЯЧЕЙКА, поименовать эту ячейку с адресом в диспетчере имен и тащить в запрос уже адрес из этой ячейки
Вы имеете ввиду адрес брать с ячейки, и уже отдельно шаманить в ячейке да?)
 
Цитата
Fuad1992 написал: Не получилось(
не верю.
Цитата
Fuad1992 написал: К примеру заменить путь
Source = Excel.Workbook(File.Contents(""C:\Users\FUAD\Desktop\TEST.xlsm""), null, true)
на
Source = Excel.Workbook(File.Contents(Activeworkbook.Path & ""\""), null, true)
Давайте еще раз.
Цитата
PooHkrd написал: в файле (если нужно, на скрытом листе) прописать путь при помощи формулы Excel ЯЧЕЙКА, поименовать эту ячейку с адресом в диспетчере имен и тащить в запрос уже адрес из этой ячейки.
Делаете отдельный запрос: Получаете из ячейки листа текущей книги (в которой находится запрос), содержащей функцию =ЯЧЕЙКА("filename";A1) путь к текущему файлу. Например, если этой ячейке на листе присвоить имя FilePath, то запрос такой:
Код
// FolderPath
let
    Source = Excel.CurrentWorkbook(){[Name="FilePath"]}[Content],
    Column1 = Source{0}[Column1],
    Custom1 = Text.BeforeDelimiter(Column1, "[")
in
    Custom1

Результат этого запроса - строка, содержащая путь к текущему файлу, включая последний слэш.
Дальше используете этот путь как параметр для создания нужного пути: добавляете к нему нужный хвост для спуска "ниже", или отрезая до предыдущего слэша для подъема "выше":

Код
LowerFilePath = FolderPath & "Cars\FORD.xlsm"
UpperFilePath = Text.BeforeDelimiter(FolderPath, "\", {1, RelativePosition.FromEnd}) & "\"
Изменено: Максим Зеленский - 21.06.2018 22:48:55 (чуть подправил код)
F1 творит чудеса
 
Доброе время суток
Цитата
Fuad1992 написал:
брать с ячейки
что же вы коллега столь не любопытны? Уже и на русском пишут ОТНОСИТЕЛЬНЫЙ ПУТЬ К ДАННЫМ POWER QUERY. Стоит только поискать, да вникнуть.
Изменено: Андрей VG - 21.06.2018 18:28:25
 
Цитата
Максим Зеленский написал:
F1 творит чудеса
Уважаемый Максим, Заработало) Я просто не знал что так тоже можно делать) Спасибо вам большое!)
 
Цитата
Андрей VG написал:
что же вы коллега столь не любопытны?
Уважаемый Андрей. Конечно же любопытно) так как, я только только осваиваю vba  с pq, мне сложно с поиском) просто я не знал что написать при поиске)
Все, разобрался) Всем спасибо!) И вам Андрей за статью
Страницы: 1
Наверх