|VBOffice Reporter is an easy to use tool for data analysis and reporting in Outlook. A single click, for instance, allows you to see the number of hours planned for meetings the next month.|
A timer is useful, for instance, if you want to start a function at regular intervals. Another scenario is to uncouple calls. For instance, if you need to clean up a folder at the startup of Outlook, you can do that right away in the Application_Startup event. If you do so, Outlook must wait until your code has finished. This could be annyoing for the user, and since Outlook 2013 your code could be punished. If you instead only start the timer in the Application_Startup event, the code execution immediately returns, and Outlook can continue to startup. Your macro will be called later then.
Click Insert/Module and paste the following code into the new module:
Private Declare Function SetTimer Lib "user32.dll" (ByVal hwnd As Long, _ ByVal nIDEvent As Long, ByVal uElapse As Long, _ ByVal lpTimerFunc As Long) As Long Private Declare Function KillTimer Lib "user32.dll" (ByVal hwnd As Long, _ ByVal nIDEvent As Long) As Long Const WM_TIMER = &H113 Private hEvent As Long Private m_Callback As ThisOutlookSession Public Sub TimerProc(ByVal hwnd As Long, ByVal uMsg As Long, _ ByVal wParam As Long, ByVal lParam As Long _ ) If uMsg = WM_TIMER Then m_Callback.TimerEvent End If End Sub Public Function EnableTimer(ByVal Interval As Long, Callback As ThisOutlookSession) As Boolean If hEvent <> 0 Then Exit Function End If hEvent = SetTimer(0&, 0&, Interval, AddressOf TimerProc) Set m_Callback = Callback EnableTimer = CBool(hEvent) End Function Public Function DisableTimer() If hEvent = 0 Then Exit Function End If KillTimer 0&, hEvent hEvent = 0 End Function
|Determine the "identity" of your emails. Set with SAM the sender and the folder folder for sent items with the help of rules.|
The folowing is a sample for how to start the timer when Outlook starts. The interval is set to 60,000 ms, that is the TimerEvent procedure will be called after 60 seconds. In that event procedure you can disable the timer if you just need that one call. Or keep the timer running if you need regular calls every 60 seconds.
In any case, before Outlook terminates at the latest you must disable the timer else Outlook would crash. Calling DisableTimer from within Application_Quit as shown is sufficient.
Private Sub Application_Startup() EnableTimer 60000, Me End Sub Public Sub TimerEvent() 'disable if you don't need more signals DisableTimer End Sub Private Sub Application_Quit() DisableTimer End Sub
|ReplyAll alerts you before unintentionally replying all, or if you are a confidential BCC recipient of the e-mail.|