这里很难过。获取运行时错误-2147417856(80010100)自动化错误系统调用失败
我有一些运行脚本的Outlook规则。
第一个Outlook脚本打开一个excel文件并在excel文件中运行宏并重复这两次(如下所示)。然后Outlook脚本关闭Excel并退出子。在第二个Excel文件的宏中发生错误。
'First File
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = False
xlApp.Application.DisplayAlerts = False
xlApp.Application.EnableEvents = False
Set xlWork = xlApp.Workbooks.Open(strPath & "\File1.xlsm")
xlWork.Application.Run "Macro1_Module.Macro1"
xlWork.Application.Run "Macro2_Module.Macro2"
xlWork.SaveAs FileName:=savepath1, FileFormat:=xlOpenXMLWorkbook
xlWork.Close
Set xlWork = Nothing
xlApp.Application.DisplayAlerts = True
xlApp.Application.EnableEvents = True
xlApp.Quit
Set xlApp = Nothing
'Second File
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = False
xlApp.Application.DisplayAlerts = False
xlApp.Application.EnableEvents = False
Set xlWork = xlApp.Workbooks.Open(strPath & "\File2.xlsm")
xlWork.Application.Run "Macro1_Module.Macro1"
xlWork.Application.Run "Macro2_Module.Macro2"
xlWork.SaveAs FileName:=savepath2, FileFormat:=xlOpenXMLWorkbook
xlWork.Close
Set xlWork = Nothing
xlApp.Application.DisplayAlerts = True
xlApp.Application.EnableEvents = True
xlApp.Quit
Set xlApp = Nothing
excel文件中的宏使用Excel中的数据创建电子邮件,并通过Outlook(CreateObject(" Outlook.Application"))发送。这使用以下代码生成电子邮件。
Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon
Set Outmail = OutApp.CreateItem(0)
On Error Resume Next
With Outmail
.To = ""
.CC = ""
.BCC = ""
.Subject = "Test"
.HTMLBody = "TEST"
.Attachments.Add (ActiveWorkbook.Path & "\" & ActiveWorkbook.Name)
End With
Outmail.Display
On Error GoTo 0
Set Outmail = Nothing
Set OutApp = Nothing
第一个Outlook脚本有时会在第一个运行时触发。我认为规则创建了积压并且一个接一个地运行。当第一个脚本在Outlook和Excel中运行时,在第二个电子邮件进入后触发第二个Outlook脚本(类似于第一个脚本但打开另一个文件)时出错。第一个脚本通过Excel宏(在第二个文件中)运行时出现以下错误消息,当您调试时,它突出显示
Set OutApp = CreateObject("Outlook.Application")
当这两个电子邮件触发的Outlook脚本间隔足以让一切都完成时,不会发生此错误。所以我知道这两个脚本在单独运行时有效(我已经测试了这个)。
有谁知道可能导致这种情况发生的原因?如果其中一个当前在Excel中工作,可以同时运行两个触发脚本的电子邮件规则吗?
答案 0 :(得分:0)
错误是RPC_E_SYS_CALL_FAILED,这很可能意味着Outlook在不同的安全上下文中运行。确保它们是相同的,并且这两个应用程序都没有以管理员的提升权限运行。