首页 > 解决方案 > 尝试使用 win32com 使用 Python 调度 SASEGObjectModel COM 对象的问题

问题描述

我正在尝试使用 pywin32 使用 Python 操作 SAS Enterprise Guide。但我遇到了一些错误。我已经尝试过 Dispatch 和 EnsureDispatch,但都返回相同的错误:

Traceback (most recent call last):
  File "C:\ProgramData\Anaconda3\lib\site-packages\win32com\client\dynamic.py", line 89, in _GetGoodDispatch
    IDispatch = pythoncom.connect(IDispatch)
pywintypes.com_error: (-2147221021, 'Operation unavailable', None, None)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "c:\Users\xxxxxxx\Desktop\test.py", line 4, in <module>
    sas = EnsureDispatch('SASEGObjectModel.Application.7.1')
  File "C:\ProgramData\Anaconda3\lib\site-packages\win32com\client\gencache.py", line 527, in EnsureDispatch
    disp = win32com.client.Dispatch(prog_id)
  File "C:\ProgramData\Anaconda3\lib\site-packages\win32com\client\__init__.py", line 95, in Dispatch
    dispatch, userName = dynamic._GetGoodDispatchAndUserName(dispatch,userName,clsctx)
  File "C:\ProgramData\Anaconda3\lib\site-packages\win32com\client\dynamic.py", line 114, in _GetGoodDispatchAndUserName
    return (_GetGoodDispatch(IDispatch, clsctx), userName)
  File "C:\ProgramData\Anaconda3\lib\site-packages\win32com\client\dynamic.py", line 91, in _GetGoodDispatch
    IDispatch = pythoncom.CoCreateInstance(IDispatch, None, clsctx, pythoncom.IID_IDispatch)
pywintypes.com_error: (-2147024809, 'The parameter is incorrect.', None, None)

(这里是使用 EnsureDispatch,使用 Dispatch 的错误几乎一样,只是没有第二次回溯后的第 2 行和第 3 行)。

此外,我尝试运行 makepy(来自同一个库)以查看它会返回什么,我收到以下消息:

找不到与“SASEGObjectModel.Application.7.1”匹配的类型库

如果我尝试使用 vbs 执行此操作,请使用以下代码:

Set app = CreateObject("SASEGObjectModel.Application.7.1")

WScript.echo app.Name

它显示一个写有“企业指南”的消息框,表明该对象对系统可用。

标签: pythoncomenterprise-guide

解决方案


我曾尝试通过 SAS 支持社区寻求帮助,经过许多有趣的建议后,我仍然无法解决问题。但是我没有尝试并最终工作的一件事是安装新的python安装(不是Anaconda),安装PyWIN并且它很简单。


推荐阅读