2016-08-09 8 views
1

Есть ли декоратор, эквивалентный PyXll @xl_func(macro=True) с xlwings?Есть ли декоратор, эквивалентный PyXll `@xl_func (macro = True)` с помощью xlwings?

Это позволит взаимодействовать со всей книгой в Excel?

Фиктивный пример: =test() в ячейке «Е5» возвращает ошибку:

@xw.func 
def test(): 
    wb = xw.Book.caller() 
    wb.sheets[0].range('A1').formula = wb.name 
    return 'done' 

Unexpected Python Error: TypeError: Objects for SAFEARRAYS must be sequences (of sequences), or a buffer object.

Ради уточнения: Я хотел бы иметь возможность писать функции Excel, без массивов формул или кнопок или макросов.

ответ

1

Да, xw.sub, из docs:

import xlwings as xw 

@xw.sub 
def my_macro(): 
    """Writes the name of the Workbook into Range("A1") of Sheet 1""" 
    wb = xw.Book.caller() 
    wb.sheets[0].range('A1').value = wb.name 
+0

Я думаю, что это макрос, а не функция Excel больше. Значение Я не могу использовать его из книги Excel, если не добавить кнопку, которая не является тем, что мне нужно сделать. Если я запускаю «= my_macro()» в Excel, он возвращает ошибку «имя, которое вы ввели, недействительно» – Sam

+0

Можете ли вы указать мне документы в pyxll того, что вы хотите сделать? –

+0

Уверен: [link] (https://enthought.pyxll.com/api/decorators.html#xl-func) (посмотрите на аргумент 'macro'. Он позволяет регистрировать функцию как эквивалент макролиста (по сравнению с UDF). Пример приведен здесь: [link] (https://enthought.pyxll.com/examples/automation.html) – Sam

 Смежные вопросы

  • Нет связанных вопросов^_^