1

我使用win32com库与outlook交互,看不到异常出现与其他东西之间的关系。不是每次我运行代码时都会出现异常。如果您给我一些链接以清除有关此库的文档或尝试帮助我解决问题,我将不胜感激

Exception appeared: (-2147023170, 'The remote procedure call failed.', None, None)

Traceback (most recent call last):

  File "C:/.../sources/main.py", line 60, in main

    logger=logger)

  File "Outlook_API_v1.py", line 142, in save_mail

    message = messages.GetFirst()

  File "C:\...\AppData\Local\Temp\9\gen_py\3.7\00062FFF-0000-0000-C000-000000000046x0x9x6\_Items.py", line 53, in GetFirst

    ret = self._oleobj_.InvokeTypes(86, LCID, 1, (9, 0), (),)

pywintypes.com_error: (-2147023170, 'The remote procedure call failed.', None, None)
4

2 回答 2

1

RPC_S_CALL_FAILED通常意味着在您的代码运行时关闭了进程外 COM 服务器(Outlook.Application在您的情况下)。

于 2022-02-03T03:15:10.357 回答
1

Outlook 可能无法满足您的需求。进程可以关闭。在这种情况下,您可能会在代码中看到描述的错误。

为防止这种情况发生,我建议向集合中添加一个新Explorer实例Explorers并使其全部保持活动状态,直到您完成为止。Explorers.Add方法创建资源管理器窗口的新实例。不要担心窗口,资源管理器窗口最初是隐藏的。如果需要,您必须调用对象的Display方法Explorer以使其可见。例如,以下 VBA 代码显示了如何使用此方法:

Sub DisplayDrafts() 
 Dim myExplorers As Outlook.Explorers
 Dim myOlExpl As Outlook.Explorer 
 Dim myFolder As Outlook.Folder 
 
 Set myExplorers = Application.Explorers
 Set myFolder = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderDrafts) 
 
 Set myOlExpl = myExplorers.Add(myFolder, olFolderDisplayNoNavigation) 
 
 myOlExpl.Display 
 
End Sub

请注意,Outlook 是一个单例。如果您在用户使用应用程序时尝试将其自动化然后关闭它,您可能会陷入相同的场景。

于 2022-02-03T22:10:59.553 回答