2017-07-27 99 views
1

我正在使用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

回答

0

使用.Display (True)

expression.Display(Modal)參數使用,除了ExplorerMAPIFolder對象的所有對象,使窗口模式。 默認值爲False

See Display Method on MSDN

+1

像一個魅力!非常感謝你的幫助! – bpjesusfreak

+1

感謝您的領導!對於在堆棧上提出問題,我很新,所以非常感謝指導。 – bpjesusfreak

相關問題