【发布时间】:2016-05-12 09:01:18
【问题描述】:
这让我很困惑......
我有一组 Excel 报告,我在早上运行,生成六封电子邮件,每封都带有附件,另外还有一个在星期三运行的单独报告集,只生成一封电子邮件。
为了使这些报告完全自动化并在没有监督的情况下运行并通过 Outlook 安全弹出窗口,我使用了这样的 Sendkeys 功能(这是来自“星期三”报告):
Dim OutApp As Object
Dim OutMail As Object
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = distlist
.CC = ""
.BCC = ""
.Subject = "30+ Days and Early Warning lists for " & Format(Now, "dd mmm")
.Body = "Latest lists attached"
.Attachments.Add ("C:\Users\" & whoami & "\Desktop\" & outputdirectoryname & "\" & outputfile1 & "")
.Attachments.Add ("C:\Users\" & whoami & "\Desktop\" & outputdirectoryname & "\" & outputfile2 & "")
.Display
Application.Wait (Now + TimeValue("0:00:06"))
Application.SendKeys "%s"
End With
Set OutMail = Nothing
Set OutApp = Nothing
Sheets("Run Buttons").Select
...效果很好。
现在,我的问题不是此代码不能正常工作,而是第一封电子邮件实际上从未被 Outlook 发送,而是仍然显示并“卡在”发件箱中。如果我未能手动干预并“发送”这第一封电子邮件,那么后续的邮件也会“卡住”,但是,如果我手动“发送”它,其他邮件会按预期通过。
因此,例如,星期三的场景是这样的......
- 运行周三报告 - 电子邮件无法发送,因此请点击“发送”
- 运行其他通常的早间报告 - 所有电子邮件都会自动通过
对于周一、周二、周四、周五的跑步......
- 第一封电子邮件发送失败,请点击“发送”
- 其余电子邮件将自动发送。
如果我反转报告的运行,以便最后运行周三报告,其电子邮件会按预期自动通过。
我的笔记本电脑被锁得比...更紧,所以不会发生任何“添加”软件,同样直接访问 SMTP/Exchange 服务器,所以现在 Sendkeys 是我唯一可用的电子邮件自动化。 Sendkeys 代码的所有出现都是相同的。
正如我所说,困惑!
那么我对 Excel 或 Outlook 有疑问吗?
...我该如何“修复”它?
非常感谢您的帮助和时间。
【问题讨论】:
-
创建邮件时是否打开了outlook?
-
您好 Kathara,Outlook 已经打开。虽然这些报告往往是早上的第一项任务,所以通常是第一个使用 Outlook,但有时我必须先回复电子邮件,所以在运行之前已经成功使用了 Outlook(并开始出现故障)这些报告
-
好的。因为它曾经发生在我身上,我没有打开 Outlook,而是“发送”一封邮件,然后卡在发件箱中。您可以尝试将“Appliation.SendKeys "%s" " 交换为 ".Send" 并查看是否有效吗? :)
-
是的,“.Send”每次都可以正常工作,因为我必须响应 Outlook 提示,实际上,它为我点击了“发送”。这是因为需要绕过 Outlook 弹出窗口,我正在使用“Application.SendKeys”%s“”
标签: excel vba outlook sendkeys