当我手动打开数据库并运行脚本时,此脚本可以正常工作。但是当我使用任务启动它时,我得到错误429'ActiveX组件无法在第二行创建对象':
Dim OlApp As Outlook.Application
Set OlApp = CreateObject("Outlook.Application")
为什么在由任务调度程序启动时会抛出错误,但是手动运行正常?
在这个主题上找到MS Support篇文章。它明确指出CreateObject
和CoCreateInstance
将失败,如果以这种方式使用上述错误消息。但是,没有替代方案。
有什么建议吗?
答案 0 :(得分:1)
从VBA代码发送电子邮件时,我始终倾向于使用CDO而不是尝试自动化Outlook。有关通过CDO发送电子邮件的示例代码,请查看here。
答案 1 :(得分:1)
可以从服务中使用没有Office应用程序,包括Outlook。即使任务可以与桌面交互,COM系统也不会让您连接到正在运行的COM对象(Outlook是单例),因为安全上下文不同。
您可以使用扩展MAPI(C ++或Delphi),CDO 1.21(已弃用且不再更新或安装)或Redemption(使用RDO系列对象) - 所有这些都加载了扩展MAPI系统进程,而不是连接到进程外COM对象(由outlook.exe公开)。
答案 2 :(得分:1)
为我修复的是以管理员身份运行Outlook 。
答案 3 :(得分:0)
我找到了解决问题的方法,VBScript解释器(cscript.exe / wscript.exe)附带64位版本的Windows和32位版本。
我所做的是安装了Office x86然后卸载然后从任务调度程序工作安装了x64测试过的电子邮件,然后重新安装了x86。每次安装和卸载后我都重启了。当您安装x64和x86版本的office时,它将安装两个版本的cscript.exe / wscript.exe x86和x64。这最终允许您从任务调度程序发送邮件(在Windows 10上测试)。
由于