VBA-由于应用程序正在调度输入同步呼叫,因此无法进行传出呼叫

VBA-由于应用程序正在调度输入同步呼叫,因此无法进行传出呼叫,vba,email,outlook,basic,Vba,Email,Outlook,Basic,我想通过使用Microsoft Visual Basic for Applications的代码发送电子邮件。Microsoft Outlook 12.0对象库在“工具/引用”下选中。代码编译时没有错误。代码在两台不同的机器上运行良好,但当我在第三台机器上测试它时,它在执行第2行时给出了错误 我已经看过很多关于这个错误的帖子,但是找不到匹配的解决方案。提前感谢您的帮助。该代码具体何时执行?它是否可能从托盘图标事件处理程序运行 启动计时器,当计时器启动时(您将退出传入的RPC调用),运行上面的代码

我想通过使用Microsoft Visual Basic for Applications的代码发送电子邮件。Microsoft Outlook 12.0对象库在“工具/引用”下选中。代码编译时没有错误。代码在两台不同的机器上运行良好,但当我在第三台机器上测试它时,它在执行第2行时给出了错误


我已经看过很多关于这个错误的帖子,但是找不到匹配的解决方案。提前感谢您的帮助。

该代码具体何时执行?它是否可能从托盘图标事件处理程序运行


启动计时器,当计时器启动时(您将退出传入的RPC调用),运行上面的代码。

谢谢大家的初始响应。原来解决问题的方法是使用CDO发送电子邮件。以下是对我有用的代码:

Set objMessage = CreateObject("cdo.message")
Set objConfig = CreateObject("cdo.configuration")
Set Flds = objConfig.Fields
Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "myExchangeServerName"
Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1  'basic (clear-text) authentication
Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "myDomain\user@myDomain.com"
Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "myPassword"
Flds.Update
Set objMessage.Configuration = objConfig
objMessage.To = "toEmail@someDomain.com"
objMessage.From = "fromEmail@someOtherDomain.com"
objMessage.Subject = "My Subject"
objMessage.Fields.Update
objMessage.HTMLBody = "<p><span style=""font-family: 'Calibri','Arial','sans-serif'"";>My Body Text</span></p>"
objMessage.AddAttachment "C:/path/filename.txt"
objMessage.Send
Set objMessage=CreateObject(“cdo.message”)
设置objConfig=CreateObject(“cdo.configuration”)
设置Flds=objConfig.Fields
Flds.项目(“http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
Flds.项目(“http://schemas.microsoft.com/cdo/configuration/smtpserver“”=“myExchangeServerName”
Flds.项目(“http://schemas.microsoft.com/cdo/configuration/smtpauthenticate“”=1“基本(明文)身份验证
Flds.项目(“http://schemas.microsoft.com/cdo/configuration/sendusername“”=“myDomain\user@myDomain.com"
Flds.项目(“http://schemas.microsoft.com/cdo/configuration/sendpassword“”=“我的密码”
飞行资料更新
设置objMessage.Configuration=objConfig
objMessage.To=”toEmail@someDomain.com"
objMessage.From=”fromEmail@someOtherDomain.com"
objMessage.Subject=“我的主题”
objMessage.Fields.Update
objMessage.HTMLBody=“我的正文
objMessage.AddAttachment“C:/path/filename.txt”
objMessage.Send

它们是否都运行相同版本的outlook?您遇到了什么错误?您是否在第三台机器上运行Outlook中的代码?@Marcelo:它们都运行相同版本的Outlook。我收到的错误是“error#-2147417843.自动化错误。由于应用程序正在发送输入同步呼叫,因此无法拨打传出呼叫。”@EugeneAstafiev:抱歉,我不理解你问题的一部分。我正在VBA中运行代码。“在Outlook中运行代码”是什么意思?代码由一个名为TeleForm Reader的高性能软件程序执行。它只是作为服务器上的应用程序保持打开状态(不在托盘中)。如何启动计时器来运行代码?我一直在阅读关于这个问题的可能的解决方案,但还没有找到一个好的URL来解释如何做到这一点。谢谢。我相信第三台机器(称为Reader)正在执行一些多线程操作,这就是为什么在尝试从第三台机器调用Outlook时出现错误的原因。我以前从未处理过线程。啊!如果我找不到解决办法,我可能不得不改变我的方法,尝试使用MAPI或直接SMTP发送电子邮件。
Set objMessage = CreateObject("cdo.message")
Set objConfig = CreateObject("cdo.configuration")
Set Flds = objConfig.Fields
Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "myExchangeServerName"
Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1  'basic (clear-text) authentication
Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "myDomain\user@myDomain.com"
Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "myPassword"
Flds.Update
Set objMessage.Configuration = objConfig
objMessage.To = "toEmail@someDomain.com"
objMessage.From = "fromEmail@someOtherDomain.com"
objMessage.Subject = "My Subject"
objMessage.Fields.Update
objMessage.HTMLBody = "<p><span style=""font-family: 'Calibri','Arial','sans-serif'"";>My Body Text</span></p>"
objMessage.AddAttachment "C:/path/filename.txt"
objMessage.Send