Страницы: Пред. 1 2 3 4 5 След.
RSS
Удобное внедрение языка программирования "Python" в файл Excel на основе портативной сборки Python, Настроенный файл Excel для удобного вызова скриптов Python из Excel
 
Код
Sub refresh()
t = Timer
Const f = "C:\temp\ex"
Set WshShell = CreateObject("WScript.Shell")
Set TextStream = WshShell.Exec("%comspec% /c chcp 1251 | dir " & f & "\*.xls* /s /b").StdOut
s = vbNullString
While Not TextStream.AtEndOfStream
    If s <> vbNullString Then
    s = s & vbCrLf & "UNION ALL "
    End If
    s = s & "Select * FROM `" & Trim(TextStream.ReadLine()) & "`.`Sheet1$`"
Wend
ThisWorkbook.Connections(1).ODBCConnection.CommandText = s
Sheet1.PivotTables(1).RefreshTable
MsgBox Timer - t
End Sub


2,11 c  на предложенных данных, правда пока все исходные просто не открыл запрос был с ошибкой.
Конечно начнутся разговоры, что это не чистый VBA ....  Но я и не спорю, для Меня VBA это дополнительное , а не основное средство.

Есть еще один толи минус толи плюс. Файл содержит все данные в кеше,
файло
Изменено: БМВ - 09.06.2021 07:52:52
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ: начнутся разговоры, что это не чистый VBA
считаю, что, если питон только за счёт библиотек и работает, то и в вба все подключения разрешены (в моём варианте словари подключены, но можно сортировкой без них)
Поздравляю с феноменальной скоростью (можно через ранее связывание попробовать) и краткостью!
Вариант перебора вложенных подпапок забрал  :D

Огорчён:
  • фирменное подмигивание/моргание Shell
  • фиксированное имя листа
  • функции для работы с кириллицей в путях (не всегда проявляется)
Изменено: Jack Famous - 09.06.2021 10:15:07
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
БМВ, а вы можете работающий файл-пример выложить?
У меня при вставке вашего кода в новую книгу не работает:
ThisWorkbook.Connections(1).ODBCConnection.CommandText = s
Цитата

Jack Famous написал:
считаю, что, если питон только за счёт библиотек и работает, то и в вба все подключения разрешены (в моём варианте словари подключены, но можно сортировкой без них)
А это не приведет к деградации темы?
Интересны решения, базирующиеся на штатных средствах Excel, которые идут "из коробки" при его установке (ну то есть с применением того, что было бы установлено при установке Excel на чистый виндовс).
В противном случае сталкиваемся с тем, что то, что запускаете вы, можно запускать и из под кода Python и что же тогда сравнивать будем?
Изменено: Сергей Юрьевич - 09.06.2021 11:18:40
 
Цитата
Сергей Юрьевич: интересны решения, базирующиеся на штатных средствах Excel, которые идут "из коробки"
вы сначала тогда разберитесь или вопросы формулируйте по-другому. НЕштатных библиотек, в отличие от вашего решения, использовано не было
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous, думаю, я не правильно выразился, но меня несколько смущают необходимость с VBA переходить на SQL в этих тестах. Так как мой код тоже можно изменить чтобы он фрагментарно исполнялся на SQL. Понимаете? Надо все делать на SQL либо ничего, иначе это не спортивно. В чем же я не прав?
Изменено: Сергей Юрьевич - 09.06.2021 11:26:41
 
Цитата
Сергей Юрьевич: меня несколько смущают необходимость с VBA переходить на SQL
ну а меня нет, родной язык, родные библиотеки, у всех есть - какие проблемы?
Для меня тесты - про скорость и удобство. У вас заморочки, что бы подготовить файл, но потом просто вызывать, мало кода и неплохая скорость
Если я подключу библу bedvit'a (что, надо заметить, гораздо проще вашего развёртывания питона), то вы в скорости проиграете - хотя и это можно считать корректным, т.к. такое же внедрение (можно не подключать надстройку, а также менеджером внедрить в файл)
Я так делать уже не стал, но почему не использовать, то что Microsoft дал в роли штатных инструментов/библиотек …

С каждым сообщением вы всё больше показываете переживание, что змея плохо выглядит на публике в среде Excel
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous, вы правы. А решение БМВ отличная демонстрация имеющихся в Excel возможностей!
Снимаю шляпу!
 
Цитата
Сергей Юрьевич написал:
Так как мой код тоже можно изменить чтобы он фрагментарно исполнялся на SQL. Понимаете? Надо все делать на SQL либо ничего, иначе это не спортивно. В чем же я не прав?
не следует смешивать понятия SQL синтаксиса и выполнения на SQL  и тем более исполнение на SQL server.
Цитата
Сергей Юрьевич написал:
а вы можете работающий файл-пример выложить?
выше ссылка жеж
По вопросам из тем форума, личку не читаю.
 
Jack Famous,
.Filter 64 + 128, "*.xls;*.xlsx;*.xlsb;*.xlsm"

в одной моей поделке было
Скрытый текст
Изменено: БМВ - 09.06.2021 12:35:52
По вопросам из тем форума, личку не читаю.
 
БМВ, спасибо, осталось ещё 2  :D
В принципе скорость получения путей меня устраивает и рекурсией, но для развития решить было бы неплохо
Моргание, как я понял, не убрать
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
В принципе скорость получения путей меня устраивает и рекурсией
буковок больше :-)
По вопросам из тем форума, личку не читаю.
 
БМВ, отдельная функция для получения списка считается библой и в учёт не входит  :)
По сути, у меня так и есть - надстройка с кучей готовых функций и процедур, для того чтобы вот такой ГЛАВНЫЙ код был коротким, но при этом быстрым и понятным
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
но при этом быстрым и понятным
и неотделимым от надстройки  :evil:
По вопросам из тем форума, личку не читаю.
 
БМВ, это же не так
Нужные для работы модули переносятся в файл, подключаются библиотеки и всё - файл автономен. Изи  ;)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
Изи
ага , тут подкрути тут зарегистрируй ......
По вопросам из тем форума, личку не читаю.
 
БМВ, перетащить мышкой модули (~5 сек), поставить флажки в ссылках на библы (~ 5 сек, если надо)
По-моему, потратить до 10ти секунд для использования намного проще, чем использовать Shell (моргание, косяки и пропуск ошибок так, что даже не понять, всё ли нормально прошло)  :D я найду это сумасшедшее время
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
косяки
ты мои косяки не трож.  :D
Цитата
Jack Famous написал:
перетащить мышкой модули
дело не во времени, а в том что в модуль у тебя что содержит только нужную процедуру или набор всего что ....
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ: модуль у тебя что содержит
обычно гораздо больше, чем нужно, но зачем тратить время на чистку, если на скорости это никак не отразится
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Добрый день! Метод Filter, указанный Михаилом в #99, работает синхронно (если не указывать специального флага) в отличие от многих других методов, относящихся к объектам от Shell.Application. Для больших папок (в тысячи файлов), особенно сетевых, он гораздо быстрее (даже при получении списка всех файлов), чем соответствующий метод от FSO (Folder.Files).
Изменено: sokol92 - 09.06.2021 17:55:03
Владимир
 
Цитата
sokol92: Filter работает синхронно в отличие от других методов Shell. Для больших папок (в тысячи файлов), особенно сетевых, он гораздо быстрее, чем FSO
приветствую, Владимир и спасибо за интересную инфу! Завтра создам отдельную тему и протестирую, а то и так намусорили тут …
Изменено: Jack Famous - 09.06.2021 18:07:27
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
намусорили тут
что значит намусорили? Это защита от змей :-)
По вопросам из тем форума, личку не читаю.
 
Надеюсь зелёный питон скоро проникнет в зелёный ексель))  
Изменено: Lari - 10.06.2021 11:06:44 (Уточнил кто куда проникает)
 
БМВ, спасибо за пример (лучше новым сообщением, а то я пропустил обновление, пока не начал искать)
Сделал тему
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous, было 5 мин, нашел ответ Андрея
По вопросам из тем форума, личку не читаю.
 
БМВ, спасибо)
Сделаю ещё тему: Сбор данных из файлов и там обсудим. Интересуют ограничения
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Доброй ночи!
Очень долго искала способ "подружить" python с Excel. Задача тут python - импортировать xps в excel. Код работает, теперь хочу запускать его из-под Excel.
Пробую делать так, как здесь посоветовали. Возникает ошибка.
Итак, я скачала Portable Python, запускаю Console-Launcher (и под именем админа тоже пробовала), набираю команду pip install xlwings - а он пишет, что pip не явлется внутренней или внешней командой, исполняемой программой или пакетным файлов.
Что я не так сделала? Буду благодарна за помощь!
 
Лина Сафиуллина, честно говоря не знаю с какой проблемой вы столкнулись, я сейчас попробовал и у меня команда выполнилась.
Все что мне приходится сделать для установки: открываю Console-Launcher.exe и через комбинацию Ctrl+V вставляю скопированный текст pip install xlwings
Нажимаю клавишу Enter и все само устанавливается
Изменено: Сергей Юрьевич - 28.10.2021 12:27:51
 
Вот и я так тоже делаю. Выходит ошибка, как на моем скриншоте выше.
 
Сергей, большое Вам спасибо за эту тему!!!

Ищу уже полгода возможность, которую Вы здесь так детально описали.
Фанатею от визуализации Excel, но надо решать задачи классификации, строить нейросети и т.п. В VBA я не вижу готовых решений и богатого матаппарата для этого. Поэтому начинаю учить python, и вот хочу иметь удобный для меня графический и табличный визуализатор. Пока хотя бы без Big Data.

Сегодня начну следовать Вашей инструкции. Скорее всего, будут ошибки, поэтому буду задавать глупые вопросы, за что сразу прошу прощения.

P.S. Учитывая что у проекта xlwings в клиентах, например, компания Royal Dutch Shell, видно что есть перспективы у этого проекта.
Изменено: Vladimir Tikhov - 09.11.2021 17:32:05
 
Коллеги, добрый день! Вставлю пять копеек в тему.

Основной интерес в подобных инструментах вызывает возможность выполнять код, который хранится в ячейках листа.
Таким образом можно в зависимости от выбранных пользователем настроек запускать не только скрипты, формировать графики, но и динамически менять контент
веб-отчета. Как я понял для данной надстройки - это только в платной версии.
для языка программирования R есть пакет excel.link который бесплатно имеет подобный функционал -  с помощью пакета reticulate из R можно запускать пайтон скрипты, а результаты и графики сразу встают в excel. можно гибко формировать код веб-приложений в shiny, или менятm настройки ml моделей (keras в том числе),

Но это все интересно только в случае если Вам прямо сейчас из экселя интересно что-то посмотреть.
Для отчетности, автоматизации - лучше использовать etl инструменты в совокупности с python/R скриптами.
Например, любые excel можно легко загнать в KNIME (аналитическая платформа для работы с данными) - сделать необходимые преобразования, трансформации и передать далее в Python/R/Jupiter notebook, получить результат и сразу залить в любую бд, или выгрузить в excel - все бесплатно и open source.

в Python сейчас набирает популярность библиотека mito  -  с ее помощью можно в интерактивном режиме работать с таблицей, при этом генерируется pandas код, который потом можно выполнить в питоне или в KNIME. Получается как запись макроса в экселе, но для питона.
В такой связке VBA вообще не нужен. (Я раньше очень много писал на VBA но теперь им совсем не пользуюсь - переделываю чужие макросы на нормальные etl)

etl процесс проще документировать, проще разрабатывать и проще поддерживать.
P.S: Если нужно машинное обучение - в KNIME есть много инструментов для работы с текстом, изображениями,есть интеграция с Keras и H2O(automl в том числе), excel можно использовать для хранения настроечных таблиц.
Изменено: egonomist - 09.11.2021 19:32:45
Страницы: Пред. 1 2 3 4 5 След.
Читают тему (гостей: 1)
Наверх