Pull to refresh

Comments 65

Код исполняется на серверах Microsoft.

Имхо, резко ограничивает практическую пользу.

Вы имеете ввиду безопасность? Или еще что-то? Поделитесь, пожалуйста, своими замечаниями.

Компьютер без доступа к интернет. Либо нет изначально или авария и работа остановилась.

100% - да, появляется еще одно звено, которое может оборваться, что, как правило, случается в самый неподходящий момент.

У нас на работе гибридное облако. По умолчанию берём данные из SharePoint.

Вроде новость про питона была уже чуть ли не полгода назад и все сразу сказали, что питон вышел дохлый.

Появился бы питон у меня в Office 2010 - цены бы не было. А то формулы там на любителя. А так конечно такое.

Мне кажется очень полезная фича, во многих организациях есть файлы с кучей сложного VBA кода, который теперь можно будет переписать на питон и использовать через Sharepoint. Вот заживём то теперь :-)

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

Если в организации уже есть Sharepoint Online или Onedrive, то зависимость и так существует. Конечно кто не работал в облаке, то наверно туда и не пойдут.

Обмен файлами и зависимость кодовой базы - это разные зависимости. По этой же причине условный Databricks - наполовину ущербный продукт.

Только адекватные организации даже VBA использовать не будут и вообще по желанию левой пятки включать все подряд скрипты... Что всё ещё не мешает использовать Python для работы с типовыми отчётами

ну, не скажу я, что код на VBA сильно сложней Питона, VBA достаточно развит, чтобы покрывать почти все потребности, и во многом даже проще. И, что самое важное - пока что я не вижу практических задач для пользователя для того, чтобы вместо VBA фигачить на питоне.

Плюс есть один момент, исключительно важный - за 30 лет на VBA написана огромная масса кода и есть дикое количество людей с нужным опытом и знаниями, развита среда - как минимум десяток ресурсов, где можно справочно посмотреть что-то по задачам для VBA я назову прям сходу. А для питона в Экселях надо будет велосипед изобретать заново, где-то искать такого же прибабахнутого питониста в экселях, чтобы вдвоем развести руками "я, чувак, такого не делал никогда, не знаю", потому что среды нет, и появление ее - это достаточно значительное время. Написать "Hello, world" и закрасить ячейку - это классно, но как насчет полноценных приложений с интефейсами, как это будет работать - этого не знает пока даже сам мелкософт

Я как раз работаю в такой организации. И сущностей и ООП и всех отсальных радостей жизни там вполне себе хватает. VBA Хорош, очень хорош для таких задач. Но у него есть лимиты и плюс он иногда бывает крайне неудобен. Буквально пару дней назад еле еле уговорил руководство перевести все с VBA на Python. Правда, не знаю, с этой фитчей или нет. У меня была немного другая задумка... Но было бы вполне себе неплохо если бы она адекватно работала... Посмотрим во что это все выльется ...
З.С. Почитал коментарии ниже, теперь вообще в сомнениях =)))

Очень хочется локально выполнять код... Подписки подписками, но не везде есть сеть....

И не всегда есть подписка ;)

Напрашивается опция "установить компонент" для желающих или использовать сервис для экономии ресурсов, да?

Если человек знает python, то что ему мешает просто взять библиотеку для работы с xlsx, прочитать файл, выполнить нужные манипуляции с данными, и записать?

Ничего не мешает, но раз уж тут такое дело, то почему бы и не пофантазировать?

То, что потом этот файл может быть нужно передать коллеге, который не знает Питон.

И надо, чтобы этот коллега мог открыть xlsx, вбить туда нужные данные, нажать кнопочку и получить расчет. Без установки Питона.

Не могу плюсануть (заряд сегодняшний иссяк), но горячо соглашусь. Вполне рабочий сценарий.

А предложенный способ с питоном где-то на сервере лучше?
Хорошо. Возьмем Go его библиотеки позволяют прочитать и записать xlsx и построить график. при этом будучи скомпилированным он может быть добавлен в качестве исполняемого файла или библиотеки и гарантированно быть выполненным в ос под которую скомпилирован. При этом синтаксис проще чем python.
Кстати, а что мешает поднять свой сервис где коллега заполнит форму и получит результат в xlsx.
И вот еще вариант. В LibreOffice python один из встроенных языков вместе с псевдо-VBA.

гарантированно быть выполненным в ос под которую скомпилирован

Это если пользователю разрешено выполнять сторонние исполняемые файлы. Кроме того, вам понадобится объяснить Маше из закупок, что теперь она будет работать не в привычном Excel (в котором был VBA), а запускать какие-то файлы.

А ещё бывает легаси, в которое проще запихнуть десять строк на VBA или Питоне, чем полностью переписывать.

Угу. Я сам админом был и мне это знакомо. Мы запретим исполнение всего и вся, что не из Program Files. Но разрешим прямое соединение с чужим сервером, на котором исполним код? А где гарантия, что при помощи python он не сформирует локальный скрипт на VBS или PS который будет выполнен на локальной машине? Каюсь я как-то даже разозлился. Коллега админ после слияния компаний выдал ограниченные права на все на уровне пользователя. Но я то работал с головной компании, потому в рамках выделенных мне прав я устроил повышение привилегий до администратора домена, после чего аннулировал его запись.

А ещё бывает легаси, в которое проще запихнуть десять строк на VBA или Питоне, чем полностью переписывать.

Т. е. Excel это новый PDF? не стоит наделять программы теми качествами, для которых они не задумывались. Давайте на чистоту, ваша "Маша из закупок" имеет совместимую версию Excel? Поскольку я не раз наблюдал ситуацию когда "Маше из закупок" приходилось устанавливать MS Office 2003, MS Office 2007, MS Office 2010, MS Office 2013... Поскольку у каждого контрагента свои представления о прекрасном.

/Это если пользователю разрешено выполнять сторонние исполняемые файлы.
Кстати, а есть какие-то разрешения на исполнение библиотек вызываемых через VB из Excel? Потому что раньше это была дырень из дыреней. Например вызываю COM, так на него даже таймауты WSH не дейтвуют. приходилось вызывать внешний гипервизор для исполнения WSH чтобы он вовремя прибил скрипт.

Потому что у этих библиотек очень ограниченный функционал, ещё такой способ не позволяет работать с таблицей и производить манипуляции с данными кодом одновременно

Если библиотека нормальная, то позволяет записать и формулу в ячейку. Подозреваю и скрипт на vba поскольку оперируют обычно на уровне XML/ZIP. То что некоторые файлы не исполняются в некоторых версиях Excel скорее проблема обратной совместимости и недостаточной документированности формата.

Вряд ли, сомневаюсь что они всё api по работе с excel и взаимодействие с com объектами там обеспечат :(

Если только рассматривать VBA как нечто (что угодно), что решает задачу добавить автоматизацию в Excel, и не важно, как это устроено изнутри и что может. Тогда да.

Если зрить в корень — тогда нет. VBA предлагает ООП с правилами игры по правилам COM, а правила игры COM подразумевает использование четко оговоренного ABI, которое очень похоже и совместимо с анатомией C++ классов, но не ограничено языком C++.

Поэтому, играя по правилам COM, VBA-код может взаимодействовать с объектами (т.е. держать ссылки и вызывать методы), написанные на любом языке, будь то хоть VB, хоть Си, хоть Си++, хоть Дельфи, хоть ваш самодельный петпроектный язык.

Но мало этого: код сторонних компонентов, написанный на Си или Си++ может так же легко взаимодействовать с объектами, написанными на VB в рамках VBA-проекта.

А может ли Питон работать с любым COM-объектом? А может ли какая-нибудь библиотека, написанная на Си, Си++ или VB6 получить ссылку на питоновский объект и взаимодействовать с ним?

Даёшь Питон в каждый утюг!

Уже, мк можно программировать на MicroPython. То есть условная стиральная машина вполне может управляться программой на Python :)

Это вряд ли. Обычно все эти python, lua и прочие высокоуровневые скриптовые, применяют для того чтобы дать пользователю возможность написать свою программу, не погружаясь в изучение железа. например какой-нибудь свой обработчик данных в модеме, PLC или например в ESP. Сами по себе они и половины аппаратных возможностей не охватывают, кроме того не могут выполнить код чувствительный к задержкам, когда буквально нужно отсчитывать такты.
В случае со стиральной машинкой, как правило пользователям достаточно воспользоваться одной из предложенных программ, а не писать программу для стирки любимого шарфика.

Код исполняется на серверах Microsoft.

Отвратительно. Это что получается, чтобы выполнить код с обращением к моим данным в Excel, я должен отправить MS не только собственно код, но ещё и содержимое самих таблиц? Или это в нынешних реалиях само собой разумеющееся? А как же, как её там... конфиденциальность... или как... безопасность?.. не?..

как у ИБ-шника у меня этот вопрос возник первым. На самом деле, первое что сейчас прийдется делать, так найти как эту штуку заблочить через групповые политики.

Если вы пользуетесь OneDrive, то, вероятно, содержание самих таблиц для злоумышленника из Microsoft уже известно.

Стороннее облако? Оно, естественно, блочится среди первых.

Я вот даже не представляю, как теперь будут эксель использовать в крупных конторах. А таблиц ведь довольно много обычно.

VBA тоже прекрасно могут отправить по сети что угодно кому угодно

И самое главное - непонятно зачем так нужно было делать. Дистрибутив питона весит не так уж и много, по сравнению с дистрибутивом офиса. Ну и дополнительные библиотеки не установишь.

Все как раз понятно. Чтоб подписку люди оплачивали...

Так она и так платится. Уж проще было бы компонентом сделать.

Полезнейшая фича, но не потому что она нужна, а потому что Майкрософт теперь стал гарантом обратной совместимости Питона, и такого факапа как с переходом со второго на третий больше не будет.

Просто будет Питон и Visual Python for Applications

Могут конечно, но как только под этим перестанет работать последняя версия pandas, pytorch или tensorflow - это станет совсем никому не нужно.

Зачем он, Python, внутри Excel вообще нужен?!?
Это главный вопрос. И вопреки всем моим тяжелым размышлениям, ответа не нахожу, хотя и очень стараюсь.

а опция что человек знает Python и не знает макросы в Excel совсем не рассматривается ? И поэтому ему проще в полученном от коллег Excel написать нужную логику на Python, не ?

Это мой случай: кое-как знаю Python и совсем не умею "в макросы и/или VBA".

Вообще нет ни какой проблемы, с известными условностями, выполнять код локально установленного Python из VBA.
А сейчас VBA и знать не нужно - его знает ChatGPT и все "склейки" можно выполнять используя сгенерированный там код.
Довольно вычурный и не очевидный бывает код VBA для Access. Для Excel же это реально Бэйсик и если Вы осилили Python, то ни чего загадочного Вы там не найдете и уж точно не запутаетесь.

А вы ChatGPT и Copilot совсем не пользовались, да? Там иногда без них что-то сделать даже погуглив быстрее, чем за ними разобраться и починить...

Вангую, что и живых людей вы часто ставите в тупик своими вопросами :))

Есть легкий путь писать промты с неплохим результатом:
Указывайте весь контекст исполнения в одном запросе, не надейтесь на его верную интерпретацию из начала сессии. Формируйте запрос всегда как будь то он первый и единственный.
Предельно четко формулируйте какой конкретно код вы хотите получить подробно описав алгоритм. Не давайте возможность ИИ додумывать алгоритм.
"Задай вопросы если возникает неопределенность"
"Подробно опиши почему именно так"

Есть тяжелый: загуглить "Научный метод" и читать эту статью гугля все непонятные термины до тех пор, пока вопросы не перестанут возникать, а собственные размышления начнут соответствовать этой методологии.
Тогда ИИ будет отвечать Вам корректно ВСЕГДА.
Минус: Вас перестанет понимать большая часть Вашего окружения, но Вам будет абсолютно всё равно, что там бубнят эти алогичные умственнонеполноценные тупни :))))
---------------------

Лично у меня иногда некоторые проблемны возникают только из-за факта существования разных версий библиотек и трансляторов. В остальном код ИИ меня полностью устраивает.

Тоже думал зачем питон если есть vba, ведь изучение API занимает намного больше времени чем взглянуть на синтаксис VBA и этим временем можно пренебречь

вот есть у меня простенькая таблица 3х3. По диагонали могут быть значения "Pass", "Fail", "In Analysis" и еще парочка. И вот в зависимости от зачения в другом столбце, я должен выставить либо общее значение с максимальным проритетом для всех (напр. pass) или для каждой клетки отдельно.
То что в питоне решается обычным else, if, switch ... , в екселе превращается в формулу длинной в два экрана, которой любой Perl позавидует.
мне сначала пришлось общаться с ChatGPT что бы эту написать формулу, а через три дня снова обращаться к ChatGPT, что бы тот обьяснил мне же, что я там писал :-)

При попытке скачать другой браузер через MS Edge, всплывает вопрос

Нам нравится, что вы есть у нас! Не могли бы вы потратить минутку и рассказать нам, почему вы пробуете другой браузер?

Да вот по этой самой причине, что код исполняется на серверах Microsoft, передавая вам и мои данные и мой код. Поэтому я хочу держаться от вас как можно дальше, и при всякой возможности вообще не пользоваться вашими продуктами. Дома уже давно перестал. На работе ещё вынужден пользоваться, но спасибо таким нововведениям, чувствую скоро и на работе откажемся.

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

почему в голосовалке есть "кто такой Питон?" но нет "кто такой exel?"?

ну и как бэ

Код исполняется на серверах Microsoft.

тонко намекает что ну его нафиг юзать этот ваш exel..

в либрофисе давно и питоны есть и JS и еще какая то экзотическая хрень

$ apt-cache search libreoffice-script
libreoffice-script-provider-bsh - BeanShell script support provider for LibreOffice scripting framework
libreoffice-script-provider-js - JavaScript script support provider for LibreOffice scripting framework
libreoffice-script-provider-python - Python script support provider for LibreOffice scripting framework

не знал что Excel тут в догоняющих

Это на самом деле довольно ожидаемо, потому что не будет же Либра завязываться на VBS. Как минимум это не будет работать на линуксе.

Excel ещё бы с CSV научиться нормально работать. Хотя наверно это сознательная политика - "используйте наши форматы"

Удобно если для расчётов нужно парсить какие то данные с сайтов, например текущий курс валют, или обращаться к апи какого либо сервиса, наверное еще фильтрация данных , да много чего интересного думаю можно сделать используя питон в екселе.

замечательный Python

Соболезную всем тем, кто использует этот отброс эволюции...

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

Вариант «для себя, чтобы для исполнения простого, в несколько строк кода, работающего с данной рабочей книгой, не нужно было вызывать Python и иметь отдельный файл со скриптом», такой сценарий лично для меня становится очень даже рабочим.

COM-либы XLWings и PyXLL дают больше, доступны 5 лет начиная с MSO 2007 и выполняются локально.

Для LibreOffice есть встроенный и довольно свежий Python, который дает делать все то же, создавать свои UDF и менять документы через UNO (некий аналог COM) c глубокой интроспекцией кода и API LibreOffice.

Sign up to leave a comment.

Articles