Search code examples
vbaoutlook

Pause Outlook for a given amount of time


I'm trying to run Outlook code 10 seconds after an email is received.

I tried using application.wait but it appears that you cannot do this with Outlook.

How do I pause Outlook for a given amount of time?


Solution

  • You can create a Sub that will mimic the Application.Wait, something like.

    Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    'For 64-Bit
    'Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    
    Public Sub Pause(intSeconds As Variant)
      ' Comments: Waits for a specified number of seconds
      ' Params  : intSeconds      Number of seconds to wait
      ' Source  : Total Visual SourceBook
    
    On Error GoTo PROC_ERR
    
        Dim datTime As Date
        datTime = DateAdd("s", intSeconds, Now)
        Do
            ' Yield to other programs (better than using DoEvents which eats up all the CPU cycles)
            Sleep 100
            DoEvents
        Loop Until Now >= datTime
    PROC_EXIT:
        Exit Sub
    
    PROC_ERR:
        MsgBox "Error: " & Err.Number & ". " & Err.Description, , "Pause Method"
        Resume PROC_EXIT
    End Sub
    

    To call this you could use Pause 3