Вызов из EXCEL sub в python с использованием xlwings работает нормально, но при запуске этого же VBA через функцию VBA генерируется следующая ошибка:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "c:\users\a112833\google drive\mytechtests\pulp\mymodule.py", line 13, in energySystemSimulator
wb = Workbook.caller()
File "C:\Python27\lib\site-packages\xlwings\main.py", line 233, in caller
xl_app, xl_workbook = xlplatform.get_open_workbook(fullname, hwnd=sys.argv[4])
File "C:\Python27\lib\site-packages\xlwings\_xlwindows.py", line 142, in get_open_workbook
duplicate_fullnames = get_duplicate_fullnames()
File "C:\Python27\lib\site-packages\xlwings\_xlwindows.py", line 124, in get_duplicate_fullnames
for xl_app in get_xl_apps():
File "C:\Python27\lib\site-packages\xlwings\_xlwindows.py", line 96, in get_xl_apps
xl_app = get_xl_app_from_hwnd(hwnd)
File "C:\Python27\lib\site-packages\xlwings\_xlwindows.py", line 73, in get_xl_app_from_hwnd
return disp.Application
File "C:\Python27\lib\site-packages\win32com\client\dynamic.py", line 522, in __getattr__
raise AttributeError("%s.%s" % (self._username_, attr))
AttributeError: <unknown>.Application
Это работает:
Sub eSS()
RunPython ("import mymodule; mymodule.eSS()")
End Sub
Это прерывает приведенную выше трассировку (игнорируйте fn. аргументы):
Function fnESS(x As Double, y As Double) As Double
Call eSS
fnESS = ActiveWorkbook.Sheets("Config").Range("T10")
End Function
Я проверил сигнатуру вызова, которая выглядит точно так же, используя подпрограмму VBA или вызов функции. Я не вижу, что вызывает ошибку.