#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, если вы не возражаете.