Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/PowerQuery. Программное изменение пути к источнику данных - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Manyasha, SLAVICK, китин  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » PowerQuery. Программное изменение пути к источнику данных (Макросы/Sub)
PowerQuery. Программное изменение пути к источнику данных
boa Дата: Среда, 21.11.2018, 14:53 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 277
Репутация: 57 ±
Замечаний: 0% ±

2013, 365
Здравствуйте, форумчане,

Есть две базы, одна размещена на SQL-сервере, а выгрузки из второй базы пользователь сохраняет в виде CSV-файлов на своем компьютере.
Создал в PowerQuery табличку, которая объединяет по определенным параметрам обе базы.
Параметры подключения к SQL-серверу статичны, а вот путь к CSV-файлу, естественно, у каждого пользователя свой.

Суть вопроса:
как в PowerQuery макросом изменить путь к источнику(CSV)


Подскажите как сделать или дайте ссылку где почитать.
К сообщению приложен файл: 4929403.png(16.4 Kb) · PowerQueryTest.xlsb(21.4 Kb)


 
Ответить
СообщениеЗдравствуйте, форумчане,

Есть две базы, одна размещена на SQL-сервере, а выгрузки из второй базы пользователь сохраняет в виде CSV-файлов на своем компьютере.
Создал в PowerQuery табличку, которая объединяет по определенным параметрам обе базы.
Параметры подключения к SQL-серверу статичны, а вот путь к CSV-файлу, естественно, у каждого пользователя свой.

Суть вопроса:
как в PowerQuery макросом изменить путь к источнику(CSV)


Подскажите как сделать или дайте ссылку где почитать.

Автор - boa
Дата добавления - 21.11.2018 в 14:53
_Boroda_ Дата: Среда, 21.11.2018, 15:12 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 13681
Репутация: 5580 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Я пишу (там макрос для выбора пользователем нужного файла) источник в умную таблицу "ТабФайл" в файле с запросом. Получаю табличку

Файл для обработки - это шапка
Полный путь - это единственная ячейка

Затем уже в запросе Квери вот так

[vba]
Код
let
    Источник0 = Excel.CurrentWorkbook(){[Name="ТабФайл"]}[Content],
    #"Измененный тип1" = Table.TransformColumnTypes(Источник0,{{"Файл для обработки", type text}}),
    Файл= #"Измененный тип1"{0}[Файл для обработки],
    Источник = Excel.Workbook(File.Contents(Файл), null, true),
...
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеЯ пишу (там макрос для выбора пользователем нужного файла) источник в умную таблицу "ТабФайл" в файле с запросом. Получаю табличку

Файл для обработки - это шапка
Полный путь - это единственная ячейка

Затем уже в запросе Квери вот так

[vba]
Код
let
    Источник0 = Excel.CurrentWorkbook(){[Name="ТабФайл"]}[Content],
    #"Измененный тип1" = Table.TransformColumnTypes(Источник0,{{"Файл для обработки", type text}}),
    Файл= #"Измененный тип1"{0}[Файл для обработки],
    Источник = Excel.Workbook(File.Contents(Файл), null, true),
...
[/vba]

Автор - _Boroda_
Дата добавления - 21.11.2018 в 15:12
boa Дата: Среда, 21.11.2018, 15:59 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 277
Репутация: 57 ±
Замечаний: 0% ±

2013, 365
_Boroda_, Спасибо за ответ,
я уже думал сделать доп.файл Excel или даже лучше Access, т.к. не потребуется открытия для обновления данных, и распространять их парой
в одном Кверя, а второй линкуется к CSV
тогда без явного открытия второго файла его можно всегда перелинковать, а в файле с кверей через относительный путь прописать линк.
Но это опять же "танцы с бубном"
Надеялся, что где-то в свойствах доступных из VBA с Кверей можно такое сделать, как, например, с коннектами. :(


 
Ответить
Сообщение_Boroda_, Спасибо за ответ,
я уже думал сделать доп.файл Excel или даже лучше Access, т.к. не потребуется открытия для обновления данных, и распространять их парой
в одном Кверя, а второй линкуется к CSV
тогда без явного открытия второго файла его можно всегда перелинковать, а в файле с кверей через относительный путь прописать линк.
Но это опять же "танцы с бубном"
Надеялся, что где-то в свойствах доступных из VBA с Кверей можно такое сделать, как, например, с коннектами. :(

Автор - boa
Дата добавления - 21.11.2018 в 15:59
_Boroda_ Дата: Среда, 21.11.2018, 16:09 | Сообщение № 4
Группа: Модераторы
Ранг: Местный житель
Сообщений: 13681
Репутация: 5580 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
В Excel 2016 (в 2019 наверное тоже) Квери вшит в Excel и им можно управлять макросами
https://docs.microsoft.com/en-us/office/vba/api/Excel.queries
https://docs.microsoft.com/en-us....ice.15)

У меня вроде тоже без открытия. В ячейке пишется путь и потом этот путь забирается в переменную "Файл" и используется для запроса Квери
Источник = Excel.Workbook(File.Contents(Файл), null, true)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеВ Excel 2016 (в 2019 наверное тоже) Квери вшит в Excel и им можно управлять макросами
https://docs.microsoft.com/en-us/office/vba/api/Excel.queries
https://docs.microsoft.com/en-us....ice.15)

У меня вроде тоже без открытия. В ячейке пишется путь и потом этот путь забирается в переменную "Файл" и используется для запроса Квери
Источник = Excel.Workbook(File.Contents(Файл), null, true)

Автор - _Boroda_
Дата добавления - 21.11.2018 в 16:09
boa Дата: Среда, 21.11.2018, 16:26 | Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 277
Репутация: 57 ±
Замечаний: 0% ±

2013, 365
Спасибо, Александр,
Буду изучать инфу по линкам


 
Ответить
СообщениеСпасибо, Александр,
Буду изучать инфу по линкам

Автор - boa
Дата добавления - 21.11.2018 в 16:26
boa Дата: Пятница, 23.11.2018, 00:45 | Сообщение № 6
Группа: Проверенные
Ранг: Обитатель
Сообщений: 277
Репутация: 57 ±
Замечаний: 0% ±

2013, 365
И снова, здравствуйте, форумчане.
Докопался я до сути и для своего примера написал следующий код:

Но, имейте ввиду, что он работает только в Excel 2016 и новее, где PowerQuery уже вшит.
Кстати, через коллекцию WorkbookQuery можно переписать/создать запрос полностью. Правда, когда я пытался в окне Watches просмотреть для Queries свойство Parent, у меня Excel "ложился" полностю, при том, что рессурсы у компа, как у космического корабля. Думаю, это еще майкрософтовская сырость.

Еще раз спасибо Александру за отзывчивость. Ваше авторитетное мнение
В Excel 2016 (в 2019 наверное тоже) Квери вшит в Excel и им можно управлять макросами
заставило меня не бросать "лопату" и "копать" дальше.

З.Ы. для Excel 2013 с установленной надстройкой PowerQuery, аналогичного решения пока не нашел, но мне пока и не особо надо.


 
Ответить
СообщениеИ снова, здравствуйте, форумчане.
Докопался я до сути и для своего примера написал следующий код:

Но, имейте ввиду, что он работает только в Excel 2016 и новее, где PowerQuery уже вшит.
Кстати, через коллекцию WorkbookQuery можно переписать/создать запрос полностью. Правда, когда я пытался в окне Watches просмотреть для Queries свойство Parent, у меня Excel "ложился" полностю, при том, что рессурсы у компа, как у космического корабля. Думаю, это еще майкрософтовская сырость.

Еще раз спасибо Александру за отзывчивость. Ваше авторитетное мнение
В Excel 2016 (в 2019 наверное тоже) Квери вшит в Excel и им можно управлять макросами
заставило меня не бросать "лопату" и "копать" дальше.

З.Ы. для Excel 2013 с установленной надстройкой PowerQuery, аналогичного решения пока не нашел, но мне пока и не особо надо.

Автор - boa
Дата добавления - 23.11.2018 в 00:45
Мир MS Excel » Вопросы и решения » Вопросы по VBA » PowerQuery. Программное изменение пути к источнику данных (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс цитирования
© 2010-2018 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!