Error in MSAccess when trying to send mail thru outlook in office 2007
Hi there
I am getting an "Application defined or Object defined error" when I try and send mail from MS Access 2003 thru Outlook in Office 2007. This procedure works fine in 2003 but does n ot want to work in 2007. I have checked all the paramaters being parsed to the code and everything is there.
Your help will be greratly appreciated
Tx Al
Dim blRet As Boolean, AccName, AccMail As String AccName = DLookup("ACName", "Clients", "ClientID=" & Me.ClientId) AccMail = DLookup("ACEmail", "Clients", "ClientID=" & Me.ClientId) blRet = ConvertReportToPDF("Invoice", vbNullString, "C:\database\Invoice No." + Str(Me.InvoiceId) + ".pdf", False, False, 0, "", "", 0, 0) SendMessageOA True, "Datatrix Invoice Number " + Str(Me.InvoiceId), "Dear " & AccName & "," & Chr(13) & Chr(10) & Chr(13) & Chr(10) & "Please find attached the abovementioned invoice for your perusal." & Chr(13) & Chr(10) & Chr(13) & Chr(10) & "Kind Regards," & Chr(13) & Chr(10) & "Carol Longhurst", AccMail, , , "C:\database\Invoice No." + Str(Me.InvoiceId) + ".pdf"End SubSub SendMessageOA(ByVal bDisplayMsg As Boolean, _ ByVal sSubject As String, _ ByVal sMsgBody As String, _ ByVal sEmailTo As String, _ Optional ByVal sCCTo As String = "", _ Optional ByVal sBCCTo As String = "", _ Optional ByVal sAttachmentPath = "") Dim objOutlook As Object Dim objOutlookMsg As Object Dim objOutlookRecip As Object Dim objOutlookAttach As Object Dim IndCheck As Boolean ' Create the Outlook session. Set objOutlook = CreateObject("Outlook.Application") ' Create the message. Set objOutlookMsg = objOutlook.CreateItem(0) With objOutlookMsg ' Add the To recipient(s) to the message. Set objOutlookRecip = .Recipients.Add(sEmailTo)' objOutlookRecip.Type = sEmailTo ' Add the CC recipient(s) to the message. If sCCTo <> "" Then Set objOutlookRecip = .Recipients.Add(sCCTo)' objOutlookRecip.Type = sCCTo End If ' Add the BCC recipient(s) to the message. If sBCCTo <> "" Then Set objOutlookRecip = .Recipients.Add(sBCCTo)' objOutlookRecip.Type = sBCCTo End If ' Set the Subject, Body, and Importance of the message. .Subject = sSubject .Body = sMsgBody '.Importance = olImportanceHigh 'High importance ' Add attachments to the message. If sAttachmentPath <> "" Then Set objOutlookAttach = .Attachments.Add(sAttachmentPath) End If ' Resolve each Recipient's name. For Each objOutlookRecip In .Recipients objOutlookRecip.Resolve Next ' Should we display the message before sending? If bDisplayMsg Then .Display Else .Save .Send End If End With Set objOutlook = NothingEnd Sub
You code is working, check value in sEmailTo.
May be
AccMail = DLookup("ACEmail", "Clients", "ClientID=" & Me.ClientId)
is returning something wrong
caandal
ASKER
That is not the problem. As I said This code works fine on a machine that has Office 2003 It has been working fine for years. The value for sEmailTo is coming from AccMail which the string above in the Sub
I have tested your code with Access and Outlook 2007 and it is working if I have assigned to AccMail some string with address ("myaddress@mydomain.com")
That could be the problem. Are you using Access 2003? If so do you know which reference includes the SendOA libraries etc?
caandal
ASKER
I have just double checked my code and there is definitely a value coming back with the code but I hard coded the e-mail address anyway and still got the same error. I know that it is not the code that is the issue but as you say maybe one of my references is causing the problem.
OK. I have now same error on computer with Office 2010 only.
It is happened if outlook is not opened. Can you try to open outlook before running program?
May be
AccMail = DLookup("ACEmail", "Clients", "ClientID=" & Me.ClientId)
is returning something wrong