Dan Waters
dwaters at usinternet.com
Thu Aug 28 10:43:29 CDT 2003
Folks, I wanted to share something I figured out (partly with help from this group) that works pretty well. My database sends email frequently, so a user should have Outlook open whenever the db is open. The following will check to see if Outlook is open - if not then Outlook will be opened. The next step is to set the foreground window back to the db which opened Outlook. It's all pretty smooth in operation, and avoids potential errors when email needs to be sent. Perhaps someone else can use this . . . Dan Waters THIS SUB IS CALLED FROM THE STARTUP FORM (WHICH IS NOT VISIBLE AND CLOSES WHEN DONE) Private Sub OpenOutlook() On Error GoTo EH Dim objOutlook As Object Dim stgApplication As String Dim lngHandle As Long '-- Path to Outlook stgApplication = "C:\Program Files\Microsoft Office\Office10\Office10\OUTLOOK.EXE" '-- check to see if Outlook is open. If not then error 429 occurs Set objOutlook = GetObject(, "Outlook.Application") MblnOutlookAvailable = True Exit Sub EH: Application.Echo True GlngErrNumber = Err.Number GstgErrDescription = Err.Description Select Case GlngErrNumber Case 429 Call Shell(stgApplication, 1) MblnOutlookAvailable = True Case Else Call GlobalErrors("", GlngErrNumber, GstgErrDescription, CurrentObjectName, "OpenOutlook") End Select End Sub THESE WINDOWS API'S ARE NEEDED. PUT THESE IN A STANDARD MODULE. Public Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) THIS IS THE OPEN EVENT FOR THE MAIN FORM OF THE DATABASE. Private Sub Form_Open(Cancel As Integer) On Error GoTo EH Dim lngMeHandle As Long '-- This will ensure that Access is in the foreground if Outlook had to be opened. _ A Sleep time is needed to let it work. 1/2 second seems OK. lngMeHandle = Me.hwnd Sleep 500 lngMeHandle = SetForegroundWindow(lngMeHandle) Exit Sub EH: Application.Echo True Call GlobalErrors("", Err.Number, Err.Description, CurrentObjectName, "Form_Open") End Sub