通过Excel发送电子邮件一次一个VBA

问题描述:

我正在使用MS Excel和Outlook 2013.我试图自动化一个Excel电子表格,它使用Outlook将5封电子邮件发送到指定的地址。通过Excel发送电子邮件一次一个VBA

诀窍是我希望每条消息一次显示一条消息,并且只有当用户点击发送或关闭消息时才转移到下一条消息。这是我到目前为止:

Sub Send_Emails() 

    Dim OutApp As Object: Set OutApp = CreateObject("Outlook.Application") 
    Dim OutMail As Object: Set OutMail = OutApp.CreateItem(0) 

    'Send Email 
    With OutMail 
     .to = "[email protected]" 
     .Subject = "This is the Subject" 
     .Body = "This is message" 
     .Display 
    End With 

    On Error Resume Next: 
    OutMail = Nothing 
    OutApp = Nothing 
    End Sub 

    Sub Send_Five_Emails() 
    For i = 1 To 5 'Send email 5 times 
     Call Send_Emails 
    Next i 
    End Sub 

此代码的问题是,它一次显示所有5个消息窗口。有没有办法让一个消息窗口的Close事件触发下一个消息窗口的显示,以便一次显示一个窗口?

我很感激帮助。

+0

我想你可以在一个MsgBox而不显示显示信息的部分,然后'Send'每个消息(否则他们将有两个MSGBOX和消息显示响应) 。否则,我怀疑有一个简单的方法来实现这一点。即我怀疑它会很复杂*。有人可能会纠正我;) –

+0

在_Call之前检​​查sent-items文件夹Send_Emails_ – jsotola

+0

没有一种简单的方法可以专门做关于窗口关闭的问题(而不是深入VB.Net)。如果您的实际目标被解释为避免XY-问题,这将有所帮助。如果你只是想在每个消息中“采取一个高峰”(而不是技术术语!),这下面的代码可能适合你... 在你的代码之后:'调用Send_Emails'放两行:'Dim answr As Byte :answr = MsgBox(“Everything Good?Click Okay To continue!”,vbOKCancel)': 'If answr vbOK Then Exit For' – PGCodeRider

使用.Display (True)

expression.Display(Modal)参数使用,除了ExplorerMAPIFolder对象的所有对象,使窗口模式。 默认值为False

See Display Method on MSDN

+1

像一个魅力!非常感谢你的帮助! – bpjesusfreak

+1

感谢您的领导!对于在堆栈上提出问题,我很新,所以非常感谢指导。 – bpjesusfreak