Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
向COM/VBA公开Python类_Python_Vba_Com - Fatal编程技术网

向COM/VBA公开Python类

向COM/VBA公开Python类,python,vba,com,Python,Vba,Com,我有一个简单的python类,我试图使com可访问(例如,VBA): 几个例子表明这是一种非常标准的方法(请参见和) 从python来看,这似乎是com可访问的。不会出现任何错误,输出将按预期显示: from comtypes.client import CreateObject f = CreateObject('Foo.Application') f.say_hello('David') 但是,当尝试从VBA实例化Foo时,出现了一个错误(运行时错误-2147024770(8007007e

我有一个简单的python类,我试图使com可访问(例如,VBA):

几个例子表明这是一种非常标准的方法(请参见和)

从python来看,这似乎是com可访问的。不会出现任何错误,输出将按预期显示:

from comtypes.client import CreateObject
f = CreateObject('Foo.Application')
f.say_hello('David')
但是,当尝试从VBA实例化
Foo
时,出现了一个错误(运行时错误-2147024770(8007007e)自动错误,无法找到指定的模块)

Dim f作为对象
Set f=CreateObject(“Foo.Application”)

我实际上能够使用(和)中描述的方法解决此错误,具体操作如下:

_reg_clsctx_ = pythoncom.CLSCTX_LOCAL_SERVER
然后在名称保护函数中使用
localserver.service({602462c5-e750-4d1c-879b-a0465bebb526})

然而,在过去的一些应用程序开发工作中(很久以前使用Python2.7),我知道我们没有做这部分工作——而是使用Innosetup从
foo.exe
foo.dll
(源自
foo.py
可能来自py2exe或类似版本)和其他依赖项编译安装程序

我对这个解决方案很满意(目前),但我想我的问题是,这是否是必要的(因为有几个例子不能做到这些),或者我是否还缺少其他东西(例如,我在前世使用的安装程序实际上是在幕后用DLL而不是.py文件处理这一点?)

附加信息:操作系统是64位Windows,运行Excel 2013(32位)和python 3.7.4(32位)

_reg_clsctx_ = pythoncom.CLSCTX_LOCAL_SERVER