Excel падает, когда я устанавливаю com объект для вызова python script - PullRequest
0 голосов
/ 08 февраля 2020

Я работаю 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, никаких ошибок ... просто вылетает и перезапускается.

У кого-нибудь есть идеи относительно того, что происходит? Любая помощь будет принята с благодарностью, заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...