У меня проблема, когда я пытаюсь вызвать сценарий Python из Excel с помощью макроса VBA. Я могу выполнить сценарий только один раз, но если я попытаюсь выполнить его несколько раз, мне придется закрыть книгу Excel и открывать заново каждый раз, когда я хочу выполнить сценарий. Я вызываю макрос из кнопки.
У меня установлена надстройка xlwings для excel.
Сценарий Python считывает таблицу листов Excel в DataFrame Pandas, выполняет некоторые вычисления, вставляет вычислениястолбец в первом пустом столбце таблицы Excel и, наконец, сохранил книгу.
При первом нажатии кнопки в Excel, чтобы выполнить скрипт, он работает правильно, но если я хочу запустить скрипт в другой раз, когдаЯ нажимаю кнопку, ничего не происходит.
Я пытался найти в Google, но я не нашел ничего похожего на эту проблему.
Код макроса vba:
sub MacroName()
RunPhyton("import script_name")
end sub()
И код Python:
import pandas as pd
import xlwings as xw
def myfunc(arg1, arg2, arg3):
pass
Book = xw.Book.caller()
df = Book.sheets('sht_name').range('rng_name').options(pd.DataFrame,
expand='table',
index=False).value
df['col_name'] = df.apply(lambda x: myfunc(x['arg1'],
x['arg2'],
x['arg3']), axis=1)
Book.sheets('sht_name').range('rng_name').options(index = False).value =\
df['col_name']
Book.save()
Код Python работает правильно.
Я ожидал, что скрипт Python запускается каждый раз, когда я нажимаю кнопку, чтобы запустить макрос VBA без необходимости закрыватьExcel книгу и открывать ее каждый раз, когда я хочу запустить скрипт.
Второй и последующие раз я нажимаю кнопку, чтобы запустить макрос ничего не происходит, я тожене появляется сообщение об ошибке.