11

我有以下python代码

o = win32com.client.Dispatch("Outlook.Application")
ns = o.GetNamespace("MAPI")
profile = ns.Folders.Item("Profile Name")
tasks = profile.Folders.Item("Tasks")
print tasks.Items

当我运行它时,脚本因以下错误而崩溃:

Traceback (most recent call last):
  File "start.py", line 47, in <module>
    o = win32com.client.Dispatch("Outlook.Application")
  File "C:\Python27\lib\site-packages\win32com\client\__init__.py", line 95, in Dispatch
    dispatch, userName = dynamic._GetGoodDispatchAndUserName(dispatch,userName,clsctx)
  File "C:\Python27\lib\site-packages\win32com\client\dynamic.py", line 108, in _GetGoodDispatchAndUserName
    return (_GetGoodDispatch(IDispatch, clsctx), userName)
  File "C:\Python27\lib\site-packages\win32com\client\dynamic.py", line 85, in _GetGoodDispatch
    IDispatch = pythoncom.CoCreateInstance(IDispatch, None, clsctx, pythoncom.IID_IDispatch)
pywintypes.com_error: (-2146959355, 'Server execution failed', None, None)

我也试过:

win32com.client.gencache.EnsureDispatch("Outlook.Application")

不知道该怎么做以及问题出在哪里

更新:仅当 Outlook 正在运行时才会发生这种情况,但发出 getActiveObject 崩溃并显示“操作不可用”

4

4 回答 4

11

错误是CO_E_SERVER_EXEC_FAILURE,这很可能意味着 Outlook 在与您的进程不同的安全上下文中运行。任一应用程序是否以提升的权限运行(以管理员身份运行)?

您的代码何时以及如何运行?

2016 年 6 月 17 日更新:只需发布评论中提到的解决方案以使其更加明显:以普通用户或提升权限运行 Outlook 和 python 代码。

于 2015-06-19T19:47:06.280 回答
2

我有同样的问题,我使用的是 Python 2.7 的 64 位安装。我重新安装了 Python 2.7 的 32 位版本,并且能够使用客户端调度调用。

于 2015-06-19T18:27:03.307 回答
1

尝试将您的脚本移动到另一个目录并从那里执行它。当我遇到它时,这解决了这个问题,虽然我不确定问题的根本原因(似乎是一个模糊的错误与 win32 API,如 Nuno 所建议的那样)。

于 2013-07-12T14:50:32.080 回答
1

我也遇到了同样的错误,

其背后的原因是上次应用程序调用 com 并没有正确退出或退出时出现一些错误。所以下次您无法调用它。

我已经关闭并重新打开了 Outlook 并重新运行了我的 py 代码,现在它运行良好。

使用这段代码来避免将来出现此错误

fx = win32com.client.Dispatch('CimplicityME.Application')
try:
    # do stuff
except:
    fx.Quit()

参考:https ://www.mail-archive.com/python-win32@python.org/msg11258.html

于 2020-11-19T12:11:58.297 回答