Solved

Error in MSAccess when trying to send mail thru outlook in office 2007

Posted on 2011-03-04
9
287 Views
Last Modified: 2012-05-11
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
 Debug error
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 Sub
Sub 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 = Nothing
End Sub

Open in new window

0
Comment
Question by:caandal
  • 5
  • 4
9 Comments
 
LVL 39

Expert Comment

by:als315
ID: 35041901
You code is working, check value in sEmailTo.
May be
AccMail = DLookup("ACEmail", "Clients", "ClientID=" & Me.ClientId)
is returning something wrong
0
 

Author Comment

by:caandal
ID: 35042064
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

 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"
 
0
 
LVL 39

Expert Comment

by:als315
ID: 35042090
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")
0
 
LVL 39

Expert Comment

by:als315
ID: 35042093
May be some references are missing?
0
What is SQL Server and how does it work?

The purpose of this paper is to provide you background on SQL Server. It’s your self-study guide for learning fundamentals. It includes both the history of SQL and its technical basics. Concepts and definitions will form the solid foundation of your future DBA expertise.

 

Author Comment

by:caandal
ID: 35043530
That could be the problem.  Are you using Access 2003?  If so do you know which reference includes the SendOA libraries etc?
0
 

Author Comment

by:caandal
ID: 35043684
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.
0
 
LVL 39

Expert Comment

by:als315
ID: 35044123
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?
0
 
LVL 39

Accepted Solution

by:
als315 earned 500 total points
ID: 35044154
You can add call to this sub before calling SendMessageOA:
 
Sub CIOIR()
    
Dim oOutlook As Object
Dim oNameSpace As Object
Dim oInbox As Object

Set oOutlook = CreateObject("Outlook.Application")
Set oNameSpace = oOutlook.GetNamespace("MAPI")
Set oInbox = oNameSpace.Folders(1)
    
   
    'Handle errors
     Err.Clear 'JIC
     On Error Resume Next
    
    'attempt
    AppActivate ("Outlook")
    
    If Err <> 0 Then oInbox.Display
    
    'reset
    Err.Clear
    On Error GoTo 0
    
    'cleanup
    Set oInbox = Nothing
    Set oOutlook = Nothing
    Set oNameSpace = Nothing
    
End Sub

Open in new window

It was taken here:
http://www.ozgrid.com/forum/showthread.php?t=73886&page=1
and one error corrected.
0
 

Author Closing Comment

by:caandal
ID: 35339863
Hi als315

Sorry for the delay in getting back to this issue.  We have been busy with a big rollout and I missed this reply

But it works perfectly
Thank you
Alan
0

Featured Post

Enterprise Mobility and BYOD For Dummies

Like “For Dummies” books, you can read this in whatever order you choose and learn about mobility and BYOD; and how to put a competitive mobile infrastructure in place. Developed for SMBs and large enterprises alike, you will find helpful use cases, planning, and implementation.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Access Report that will show table changes 7 44
Access Runtime 2010 Error 17 29
Outlook pst total item message count 2 21
restore emails from public folder 2 13
Is your Office 365 signature not working the way you want it to? Are signature updates taking up too much of your time? Let's run through the most common problems that an IT administrator can encounter when dealing with Office 365 email signatures.
MS Outlook is a world-class email client application that is mainly used for e-communication globally.  In this article, we will discuss the basic idea about MS Outlook, its advanced features, and types of MS Outlook File formats.
The viewer will learn how to create two correlated normally distributed random variables in Excel, use a normal distribution to simulate the return on different levels of investment in each of the two funds over a period of ten years, and, create a …
The viewer will learn how to  create a slide that will launch other presentations in Microsoft PowerPoint. In the finished slide, each item launches a new PowerPoint presentation and when each is finished it automatically comes back to this slide: …

930 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

14 Experts available now in Live!

Get 1:1 Help Now