Dan Waters
dwaters at usinternet.com
Fri Jun 2 07:15:04 CDT 2006
Hi Rocky, Heenan Lambert gave me some code once which I was able to use to great effect. Below are three procedures which I now use to select any Outlook folder, and then select an email within that folder. This is code behind a form The primary procedure that will help is called SelectOutlookMAPIFolder. It's the second one shown here. Also - look at the error messages - they do help a user to understand Microsoft's 'An application is trying to send messages on your behalf . . .' warning. ---------------------------------------------------------------------------- Private Sub butAttachEmail_Click() If ErrorTrapping = True Then On Error GoTo EH Dim stgDestination As String '-- Can't Attach over an existing file If Not IsNull(txtPartFileTitle) Then FormattedMsgbox GstgNotReady, "The file " _ & vbCrLf & vbCrLf _ & txtPartFileTitle _ & vbCrLf & vbCrLf _ & " is already attached here, and you cannot attach another file over it.@ @", vbExclamation + vbOKOnly, "Cannot Attach Over an Existing File" Exit Sub End If Set modMAPIFolder = SelectOutlookMAPIFolder If modMAPIFolder Is Nothing Then Exit Sub End If Call CreateMessgeList DoCmd.OpenForm "frmAttachEmail", , , , , acDialog Set modMAPIFolder = Nothing Exit Sub EH: Application.Echo True DoCmd.SetWarnings True GlngErrNumber = Err.Number GstgErrDescription = Err.Description Select Case GlngErrNumber Case 287 FormattedMsgbox GstgReminder, "To directly store an email as a file, you must allow Access to your email." _ & vbCrLf & vbCrLf _ & "First, check the Allow Access checkbox to allow 1 minute of access to your email list." _ & vbCrLf & vbCrLf _ & "Then push the Yes button.@ @", vbExclamation + vbOKOnly, "You must grant allow Access to your email!" Case Else Call GlobalErrors("", GlngErrNumber, GstgErrDescription, Me.Name, "butAttachEmail") End Select End Sub ---------------------------------------------------------------------------- Private Function SelectOutlookMAPIFolder() As Outlook.MAPIFolder If ErrorTrapping = True Then On Error GoTo EH Dim oParentMailItem As Outlook.MailItem Dim oParentFolder As Outlook.MAPIFolder Dim olApp As Outlook.Application Set olApp = CreateObject("Outlook.Application") Continue: Set oParentFolder = olApp.GetNamespace("MAPI").PickFolder If oParentFolder Is Nothing Then Exit Function End If If oParentFolder.DefaultItemType <> olMailItem Or oParentFolder.Name = "Deleted Items" Then FormattedMsgbox GstgNotReady, "You must select a Mail Folder!@ @", vbExclamation + vbOKOnly, "Mail Folder Only" Set oParentFolder = Nothing GoTo Continue End If If oParentFolder.Items.Count = 0 Then FormattedMsgbox GstgNotReady, "There are no Items in the folder " _ & vbCrLf & vbCrLf _ & oParentFolder.Name & ".@ @", vbExclamation + vbOKOnly, "No Email Items" Set oParentFolder = Nothing GoTo Continue End If Set SelectOutlookMAPIFolder = oParentFolder Set oParentFolder = Nothing Exit Function EH: Application.Echo True Call GlobalErrors("", Err.Number, Err.Description, Me.Name, "SelectOutlookMAPIFolder") End Function ---------------------------------------------------------------------------- Private Sub CreateMessgeList() If ErrorTrapping = True Then On Error GoTo EH Dim objMailItem As Outlook.MailItem Dim stgFileName As String Dim lngItemNumber As Long Dim stgSubject As String Dim stgSetOrder As String DoCmd.SetWarnings False DoCmd.RunSQL "DELETE * FROM tblFEAttachEmails" DoCmd.SetWarnings True With modMAPIFolder If .Items.Count > 0 Then SysCmd acSysCmdInitMeter, "Creating Email List", .Items.Count For lngItemNumber = 1 To .Items.Count On Error Resume Next Set objMailItem = .Items(lngItemNumber) On Error GoTo 0 With objMailItem stgSubject = Replace(CleanFileName(.Subject), "'", "''") DoCmd.SetWarnings False DoCmd.RunSQL "INSERT INTO tblFEAttachEmails (Subject, FromName, DateReceived, MessageNumber)" _ & " VALUES ('" & stgSubject & "', '" & Replace(.SenderName, "'", "''") & "', #" & .ReceivedTime & "#, " & lngItemNumber & ");" DoCmd.SetWarnings True End With SysCmd acSysCmdUpdateMeter, lngItemNumber Next lngItemNumber SysCmd acSysCmdClearStatus End If End With Set objMailItem = Nothing Exit Sub EH: Application.Echo True DoCmd.SetWarnings True GlngErrNumber = Err.Number GstgErrDescription = Err.Description Select Case GlngErrNumber Case 287 FormattedMsgbox GstgReminder, "To directly store an email as a file, you must allow Access to your email." _ & vbCrLf & vbCrLf _ & "First, check the Allow Access checkbox to allow 1 minute of access to your email list." _ & vbCrLf & vbCrLf _ & "Then push the Yes button.@ @", vbExclamation + vbOKOnly, "You must allow Access to your email!" Case Else Call GlobalErrors("", GlngErrNumber, GstgErrDescription, Me.Name, "Create Message List") End Select End Sub ---------------------------------------------------------------------------- Best of Luck! Dan -----Original Message----- Subject: [AccessD] Outlook Automation Dear List: I need to look in a specific outlook folder for mail. I can't find the syntax for this. Can anyone point me in the right direction? MTIA Rocky -- Rocky Smolin Beach Access Software 858-259-4334 www.e-z-mrp.com