Al_Ex
Участник

Offline
Сообщений: 32
|
Казалось бы, простой вопрос, на который пока не могу найти простого ответа. Нужно получить адрес активной ячейки, нашел пока только такое решение: sheet.getCellByPosition(46, 4).AbsoluteName
Но здесь возвращаемое значение '$Sheet1.$AU$5', а нужно просто AU5. Можно конечно обрезать лишнее, но нет ли более простого решения? В Экселе это было вот так: ActiveCell.Address(RowAbsolute:=False, ColumnAbsolute:=False)
P.S. Макрос на Python
|
|
|
Записан
|
|
|
|
Al_Ex
Участник

Offline
Сообщений: 32
|
Получилась такая конструкция, в принципе работает active_cell_value_ref_input = sheet.getCellByPosition(1, 1).AbsoluteName[len(sheet.getName()) + 2:].replace('$','')
|
|
|
Записан
|
|
|
|
economist
|
По лаконичности - можно и как в Excel Option VBASupport 1
Sub getActiveCelladdress() adr=ActiveCell.address ' так же можно [A5:C6], [Диапазончик] итд End Function
|
|
|
Записан
|
Руб. за сто, что Питоньяк Любит водку и коньяк! Потому что мне, без оных, - Не понять его никак...
|
|
|
rami
|
По лаконичности - можно и как в Excel Option VBASupport 1
Sub getActiveCelladdress() adr=ActiveCell.address ' так же можно [A5:C6], [Диапазончик] итд End Function
Это процедура или функция  или "дурофункция"  Эх, было бы хорошо так: Option PythonSupport 1  (вопрос был о Python, но такого раздела у нас нет, может когда-нибудь появится, если будет бодрый спрос и щедрое предложение)
|
|
|
Записан
|
|
|
|
economist
|
Это копипаст, с ошибкой, сорри. Работает и как функция, но тогда еще надо в коде Option VBASupport 1 Option Compatible
'----------------------------------------------- Function СУММОЧКА(a as range) as double ThisComponent.BasicLibraries.VBACompatibilityMode=true
...
End Function
Вообще, поддержка VBA в OpenOffice|LibreOffice на довольно хорошем уровне. Объектная модель - реализована от Application до уровня ячеек - почти на 100%, так что рекомендую.
|
|
« Последнее редактирование: 23 Май 2017, 16:19 от economist »
|
Записан
|
Руб. за сто, что Питоньяк Любит водку и коньяк! Потому что мне, без оных, - Не понять его никак...
|
|
|
economist
|
Python, увы, пока не поддерживается в IDE OpenOffice|LibreOffice, а без полноценной отладки - шансов стать популярным нет. Плюс UNO-модель настолько сложная и неудобная, что отбивает охоту сразу.
Также не хватает прозрачной интеграции с внешним Питоном, а "встроенный" - опять же, полон чудес и загадок. Был б здорово поменять Pythonpath и получить рабочий интерпретатор, но увы.
|
|
|
Записан
|
Руб. за сто, что Питоньяк Любит водку и коньяк! Потому что мне, без оных, - Не понять его никак...
|
|
|
Al_Ex
Участник

Offline
Сообщений: 32
|
Python, увы, пока не поддерживается в IDE OpenOffice|LibreOffice, а без полноценной отладки - шансов стать популярным нет. Плюс UNO-модель настолько сложная и неудобная, что отбивает охоту сразу.
Также не хватает прозрачной интеграции с внешним Питоном, а "встроенный" - опять же, полон чудес и загадок. Был б здорово поменять Pythonpath и получить рабочий интерпретатор, но увы.
Возможно, я пошел сложным путем. Нужно прикрутить довольно большой и сложный макрос, написанный в Экселе, для Либры. Сходу он не взлетел. Промучившись пару дней, решил переписать все на Питоне. Настроил PyCharm + Libre + модуль UNO = как-то потихоньку идет, но очень уже тяжело без понимания каких-то методов работы с таблицей. К тому же и Питон я толком еще не освоил. В общем методом проб и ошибок...
|
|
|
Записан
|
|
|
|
economist
|
Тогда попробуйте макрос VBA переписать на смеси VBA+StarBasic. Она вполне быстро и внятно работает. В #4 я привел код для максимальной совместимости. После однократного запуска ThisComponent.BasicLibraries.VBACompatibilityMode=true нужно файл переоткрыть и будет привычнее. К сожалению, нет ни одного свежего документа почитать про VBA-SB, так что только пробовать. Если макрос делает сложное форматирование, фильтрации итп - Python с PyUNO может дико тормозить.
Наибольшей скорости я достигал используя консольный Python для парсинга, расчетов итп, а затягивал результаты и форматировал на VBA+SB.
|
|
|
Записан
|
Руб. за сто, что Питоньяк Любит водку и коньяк! Потому что мне, без оных, - Не понять его никак...
|
|
|
Al_Ex
Участник

Offline
Сообщений: 32
|
Даже не знаю, возможно вернусь еще к VBA + StarBasic, т.к. не дошел еще до самых сложных функций. Но скорость мне не особо важна, т.к. макрос будет запускаться раз в день. Даже если он будет идти минут до 10 - не принципиально.
|
|
|
Записан
|
|
|
|
economist
|
Но Python+PyUNO, да еще через PyCharm - точно сложный путь. Я для отладки использую PyScripter и только внешний Python, не из OLO.
Если не использовать активно самые главные плюсы удава - срезы, списки, словари, try except else и что-то из библиотек (системную, re, sqlite3, win32com итп) - то все его преимущества поблекнут перед встроенным VBA/SB.
Кабы разработчики переписали объектную модель OLO под Python, без UNO - был бы другой основной язык автоматизации. А пока - кто в лес, кто по дрова.
Счас меня зашикают старшие товарищи и разработчики - но увы, сделать я это сам не могу, поскольку нахожусь по другую сторону баррикад, в отряде "программирующих пользователей", и на этой стороне приношу больше пользы стране и конторе, где работаю.
|
|
« Последнее редактирование: 23 Май 2017, 19:32 от economist »
|
Записан
|
Руб. за сто, что Питоньяк Любит водку и коньяк! Потому что мне, без оных, - Не понять его никак...
|
|
|
|