Из массива или списка python numpy в COM SAFEARRAY

#python #win32com #xlwings #pythoncom

#питон #win32com #xlwings #pythoncom

Вопрос:

Есть ли какой-либо встроенный метод или любой другой способ перевести массив / список python numpy в COM SAFEARRAY?

Существует аналогичный метод в матрице R: R для COMSAFEARRAY

Довольно странно, что я ничего не нашел в python.

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

Спасибо

Ответ №1:

xlwings позаботится об этом:

 import xlwings as xw
import numpy as np

book = xw.Book()
book.sheets[0]['A1'].value = np.array([[1, 2], [3, 4]])
 

Комментарии:

1. Ну да, в таком случае все в порядке. НО, когда я пытаюсь передать список в макросе, который имеет функцию VBA, которая принимает что-то как вариант, я получаю сообщение об ошибке TypeError: Объекты для SAFEARRAYS должны быть последовательностями (последовательностей) или объектом буфера. Есть обходной путь?

2. Кроме того, Феликс, как можно обрабатывать необязательные параметры в функции VBA при вызове ее из python? Я ничего не видел в документации

3. Я думаю, что имеет больше смысла задавать эти вопросы в выпусках GitHub, если вы не возражаете.