python в Excel с xlwings - PullRequest
       18

python в Excel с xlwings

0 голосов
/ 12 апреля 2020

Я пытаюсь реализовать UDF через xlwings из существующего сценария python, который реализует win32com.client. Сценарий успешен, если выполняется из оболочки, но завершается с ошибкой автоматизации, если вызывается из соответствующей UDF. С помощью отладки я обнаружил, что ошибка возникает при попытке установить новое значение для sel_range.Interior.Color, где sel_range - это объект Range из активного листа (из win32com.client).

В частности, исключение повышается с Python38-32\Lib\site-packages\win32com\client\__init__.py, строка 482, при попытке вызвать self._oleobj_.Invoke(*(args + (value,) + defArgs)). Сравнивая запуск из оболочки и из UDF, все объекты и аргументы одинаковы.

К сожалению, я не могу отлаживать дальше в Invoke, и я только начинаю с COM-объектами.

У кого-нибудь есть идея, в чем может быть проблема? Почему у Invoke of the oleobj такое разное поведение? Базовый сценарий полностью основан на win32com, и из xlwings я использую только надстройку с декоратором xw.fun c.

EDIT Я обнаружил, что это действительно желаемое поведение xlwings, и диапазоны не могут быть установлены в UDF. Есть ли обходной путь? Нечто эквивалентное.

1 Ответ

1 голос
/ 14 апреля 2020

Так как это похоже на крупный дизайн Excel, я переместил лог c своей функции в макрос и назначил его кнопке.

...