通过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事件触发下一个消息窗口的显示,以便一次显示一个窗口?
我很感激帮助。
使用.Display (True)
的expression.Display(Modal)
参数使用,除了Explorer
和MAPIFolder
对象的所有对象,真使窗口模式。 默认值为False。
像一个魅力!非常感谢你的帮助! – bpjesusfreak
感谢您的领导!对于在堆栈上提出问题,我很新,所以非常感谢指导。 – bpjesusfreak
我想你可以在一个MsgBox而不显示显示信息的部分,然后'Send'每个消息(否则他们将有两个MSGBOX和消息显示响应) 。否则,我怀疑有一个简单的方法来实现这一点。即我怀疑它会很复杂*。有人可能会纠正我;) –
在_Call之前检查sent-items文件夹Send_Emails_ – jsotola
没有一种简单的方法可以专门做关于窗口关闭的问题(而不是深入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