第一个sendkeys自动电子邮件实际上并不是从Outlook发送的

时间:2016-02-03 08:56:32

标签: excel vba outlook sendkeys

这让我很困惑......

我有一组Excel报告,我在早上运行,生成六封带有附件的电子邮件,另外还有一个在星期三运行的单独报告集,只生成一封电子邮件。

为了使这些报告完全自动化并在没有监督的情况下运行并通过Outlook安全性弹出窗口,我使用了Sendkeys函数(这是来自' Wednesday'报告):

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发送但仍然显示并且“卡住”#39;在发件箱中。如果我无法手动干预并且发送'这是第一封电子邮件,然后随后的电子邮件也会被卡住,但是,如果我手动执行“发送”电子邮件。它,其他人按预期流过。

因此,例如,星期三的情况是这样的......

  1. 运行星期三报告 - 该电子邮件未能发送,请点击“发送”
  2. 运行其他通常的早间报告 - 所有电子邮件都会自动完成
  3. 对于周一,周二,周四,周五运行...

    1. 第一封电子邮件无法收到,请点击“发送”
    2. 其他电子邮件会自动发送。
    3. 如果我反向运行报告,以便星期三报告最后运行,则其电子邮件会按预期自动发送。

      我的笔记本电脑被锁定得比....更紧密所以任何软件的添加'不会发生,同样直接访问SMTP / Exchange服务器所以现在Sendkeys是唯一可用的电子邮件自动化。 Sendkeys代码的所有出现都是相同的。

      正如我所说,困惑!

      我在使用Excel或Outlook时遇到问题吗?

      ......以及我如何修复'它?

      非常感谢您的帮助和时间。

2 个答案:

答案 0 :(得分:0)

仅当检查员在前台处于活动状态时,SendKeys才可能正常工作。为什么不尝试其他解决方法(ClickYes,Redemption)?见http://www.outlookcode.com/article.aspx?id=52

答案 1 :(得分:0)

在.Display

之前添加以下代码
If Application.VBE.MainWindow.Visible = True Then Application.VBE.MainWindow.Visible = False