Я работаю windows10 на azure VM с Office365 Pro Plus. Я пытаюсь настроить COM-объект для вызова сценария python а-ля:
http://exceldevelopmentplatform.blogspot.com/2018/01/calling-python-class-using-vba-with-com.html
Мне удалось получить clsid с помощью pip install pywin32 -> [python shell] import pythoncom -> print(pythoncom.CreateGuid())
и поэтому мой python скрипт очень прост.
Просто пытаюсь проверить, работает ли он:
class PythonClass1(object):
_reg_clsid_= "{<Guid from script above here>}"
_reg_progid_= 'PythonLib1.PythonClass1'
_public_methods_ = ['Greeting']
def Greeting(self):
print("this work?")
return "Hello World"
if __name__=='__main__':
print("Registering COM server...")
import win32com.server.register
win32com.server.register.UseCommandLine(PythonClass1)
Я пытаюсь вызвать это из vba в excel следующим образом:
Sub TestingButton_Click()
Dim objPython As Object
Set objPython = CreateObject("PythonLib1.PythonClass1")
Debug.Print objPython.Greeting()
End Sub
Когда я запускаю этот модуль, в течение 5 секунд на моем курсоре загружается спиннер, а затем Excel просто падает и перезапускает Excel с панелью восстановления версии на левой стороне, как при обычном сбое Excel.
Я совершенно не понимаю, почему это произойдет. Я пробовал debug.print-ing в VBA, а также в сценарии python. Ничего в win32traceutil.py
, никаких ошибок ... просто вылетает и перезапускается.
У кого-нибудь есть идеи относительно того, что происходит? Любая помощь будет принята с благодарностью, заранее спасибо.