Hi python-win32 community.I am trying to get this toy COM server (code is below) to work. It is the sample code from "Python Programming for Win32" and adapted for python 3.10. When I test it using VBA in Word, I get this error:Run-time error '429':ActiveX component can't create objectI don't know if I am missing one a 
required _reg_param_ that is needed for Win10.Is there is an extra step I need to take to register/run the COM server?I don't know if win32com.server.localserver.serve [] is necessary.Does the class need an __init__ method to do something?I appreciate any help or insight into getting this to work. Thank you!Sincerely, 
BrianContext:Windows 10, python 3.10, Office 365, running python code as AdministratorI have verified the python class works in python only.I tried registering/unregistering using both options shown below. Both appear to work - no error messages. I can find info about the COM Server using Regedit.I tried the --debug flag, but it 
didn't provide any verbosity.I'm learning COM, but the info about it is sparse and generally very abstract.Python script, SimpleCOMServer.py:"""A sample COM server - almost as small as they come."""# import sysimport pythoncomimport win32com.server.registerclass PythonUtilities:    
"""We expose a simple method in a Python COM object."""    _reg_clsctx_ = pythoncom.CLSCTX_LOCAL_SERVER    _public_methods_ = ["SplitString"]    _reg_progid_ = "PythonDemos.Utilities"    _reg_desc_ = "PythonDemos Test COM Server"    # NEVER copy the following ID    # Use 
"print(pythoncom.CreateGUID())" to made a new on.    _reg_clsid_ = "{819E8336-00B5-4025-979A-46EE1EF411B7}"    # for Python 3.7+    # https://stackoverflow.com/questions/1054849/consuming-python-com-server-from-net    _reg_verprogid_ = "PythonDemos.Utilities.1"    # <filename>.<classname> 
   _reg_class_spec_ = "SimpleCOMServer.PythonUtilities"    def SplitString(self, val, separator=None):        """Split a string by a separator."""        # if separator is not None:        #     return val.split(separator)        # else:        #     return val.split()        if separator 
is not None:            return str(val).split(str(separator))        else:            return str(val).split()# Add code so that when this script is run by python e.e, it self-registers.if __name__ == "__main__":    print("Registering COM server...")    win32com.server.register.UseCommandLine(PythonUtilities)   
 # if "--register" in sys.argv[1:] or "--unregister" in sys.argv[1:]:    #     win32com.server.register.UseCommandLine(PythonUtilities)    # else:    #     # start the server.    #     from win32com.server.localserver import serve    #     serve(["{819E8336-00B5-4025-979A-46EE1EF411B7}"])Word VBA 
macro:Sub TestPython()     Dim PythonUtils As Object    Set PythonUtils = CreateObject("PythonDemos.Utilities")    response = PythonUtils.SplitString("Hello from VB")    For Each Item In response        MsgBox Item    NextEnd Sub
_______________________________________________
python-win32 mailing list
python-win32@python.org
https://mail.python.org/mailman/listinfo/python-win32

Reply via email to