Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
Discussion GroupsFormsForms ProgrammingQueriesModules / DAO / VBAReports / PrintingMacrosDatabase DesignSecurityConversionImporting / LinkingSQL Server / ADPMultiuser / NetworkingReplicationSetup / ConfigurationDeveloper ToolkitsActiveX ControlsNew UsersGeneral 1General 2
Access DirectoryToolsTutorialsUser Groups
Related Topics
SQL ServerOther DB ProductsMS OfficeMore Topics ...

MS Access Forum / Modules / DAO / VBA / March 2007

Tip: Looking for answers? Try searching our database.

Can I have some help please?

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
scubadiver - 01 Mar 2007 09:55 GMT
Hi,

I've tried posting this twice but no reply.

I am using the following code to export field info to an email but it works
fine ONLY when I first open the DB. When I try to click on the button again I
get the 2957 run-time error. The "DoCmd" line gets highlighted.

(ignore the "blah blah", the real code works fine)

Any ideas?

Private Sub Tracksht_Click()

Dim strToWhom As String
Dim strMsgBody As String
Dim strSubject As String

strSubject = blah blah
strToWhom = blah blah
strMsgBody = blah blah

DoCmd.SendObject , , , strToWhom, , , strSubject, strMsgBody, True

End Sub
BeWyched - 01 Mar 2007 10:13 GMT
Hi

There is nothing wrong with your code.

The coding may throw an error if the generated email isn't sent. i.e. it is
created then closed without sending. On my PC this throws a '2501 -
SendObject action was canceled' error. I suspect the problem is with your
email service - what do you use for this (Outlook etc?).

BW

> Hi,
>
[quoted text clipped - 21 lines]
>
> End Sub
scubadiver - 01 Mar 2007 10:31 GMT
I tried sending the email but pressing the button still comes up with a
reserved run-time error (2957).

I am using lotus notes

thanks

> Hi
>
[quoted text clipped - 32 lines]
> >
> > End Sub
Keith Wilby - 01 Mar 2007 11:15 GMT
> I am using lotus notes

This might be your problem.  I seem to remember having to write reams of
code to make Access work with LN because it's all geared up to work with
Outlook.  Anyone else care to comment, am I on the right track?

In the meantime I'll see if I can find the code I used.

Keith.
www.keithwilby.com
Stefan Hoffmann - 01 Mar 2007 12:20 GMT
hi Keith,

>> I am using lotus notes
> This might be your problem.  I seem to remember having to write reams of
> code to make Access work with LN because it's all geared up to work with
> Outlook.  Anyone else care to comment, am I on the right track?
Afaik on mvps.org you will find Lotus automation code.

mfG
--> stefan <--
scubadiver - 01 Mar 2007 12:55 GMT
What does this code do and where do I find it on mvps?

> hi Keith,
>
[quoted text clipped - 6 lines]
> mfG
> --> stefan <--
Keith Wilby - 01 Mar 2007 13:09 GMT
> What does this code do and where do I find it on mvps?

Here's a copy of a posting from a few years back, don't ask me to explain
any of the code because I've not used it since and I found the whole
experience made my head hurt:

> Can you use the "SendObject" action in Access VBA with Lotus Notes?

Well the short answer is yes but it isnt easy at all.  I got this code from

the net which may be of help.  I have actually got this code to work but it

is very flakey in terms of reliability.

*******

Lotus Notes from VB or VBA

   This piece of code shows you how to mail direct from VBA into lotus

notes. Requires Lotus Notes Client 4.5.x or later is installed on your

system.

   As far as I can tell the Lotus Notes objects all have to be late bound

otherwise you get errors. I have never found out the reason for this (the

only thing I can think of is there is an error in the lotus notes api). Feel

free to use this code, but if you do you it, I would appreciate a link from

your site if you have one.

Point of note. Certain versions of 4.x client handle differently. If you get

an error about object already exists, or two attachments instead of one, you

will need to comment out the line that reads   MailDoc.CREATERICHTEXTITEM

("Attachment"). In later versions of notes API this task is carried out by

the previous line.

'Public Sub SendNotesMail(Subject as string, attachment as string,

'recipient as string, bodytext as string,saveit as Boolean)

'This public sub will send a mail and attachment if neccessary to the

'recipient including the body text.

'Requires that notes client is installed on the system.

Public Sub SendNotesMail(Subject As String, Attachment As String, Recipient

As String, BodyText As String, SaveIt As Boolean)

'Set up the objects required for Automation into lotus notes

   Dim Maildb As Object 'The mail database

   Dim UserName As String 'The current users notes name

   Dim MailDbName As String 'THe current users notes mail database name

   Dim MailDoc As Object 'The mail document itself

   Dim AttachME As Object 'The attachment richtextfile object

   Dim Session As Object 'The notes session

   Dim EmbedObj As Object 'The embedded object (Attachment)

   'Start a session to notes

   Set Session = CreateObject("Notes.NotesSession")

   'Get the sessions username and then calculate the mail file name

   'You may or may not need this as for MailDBname with some systems you

   'can pass an empty string

   UserName = Session.UserName

   MailDbName = Left$(UserName, 1) & Right$(UserName, (Len(UserName) -

InStr(1, UserName, " "))) & ".nsf"

   'Open the mail database in notes

   Set Maildb = Session.GETDATABASE("", MailDbName)

    If Maildb.ISOPEN = True Then

         'Already open for mail

    Else

        Maildb.OPENMAIL

    End If

   'Set up the new mail document

   Set MailDoc = Maildb.CREATEDOCUMENT

   MailDoc.Form = "Memo"

   MailDoc.sendto = Recipient

   MailDoc.Subject = Subject

   MailDoc.Body = BodyText

   MailDoc.SAVEMESSAGEONSEND = SaveIt

   'Set up the embedded object and attachment and attach it

   If Attachment <> "" Then

       Set AttachME = MailDoc.CREATERICHTEXTITEM("Attachment")

       Set EmbedObj = AttachME.EMBEDOBJECT(1454, "", Attachment,

"Attachment")

       MailDoc.CREATERICHTEXTITEM ("Attachment")

   End If

   'Send the document

   MailDoc.PostedDate=Now() 'Gets the mail to appear in the sent items

folder

   MailDoc.SEND 0, Recipient

   'Clean Up

   Set Maildb = Nothing

   Set MailDoc = Nothing

   Set AttachME = Nothing

   Set Session = Nothing

   Set EmbedObj = Nothing

End Sub

If you want to send a message to more than one person or copy or blind

carbon copy the following may be of use to you.

MailDoc.sendto = Recipient

MailDoc.CopyTo = ccRecipient

MailDoc.BlindCopyTo = bccRecipient

Also for multiple email addresses you just set MailDoc.sendto to an array of

variants each of which will receive the message. So

Dim recip(25) as variant

recip(0) = "emailaddress1"

recip(1) = "emailaddress2" e.t.c

maildoc.sendto = recip

Thanks must go out to

Mark Austin, Long Beach, California

assisted by the great folks at

www.deja.com & www.notes.net

*******

I also found this which uses SendObject but i have never tried it and so

dont know how good it is.

*******

The following code snippet should send an Email via Lotus Notes from within

Access without using SendObject

Dim notesdb As Object

Dim notesdoc As Object

Dim notesrtf As Object

Dim notessession As Object

Set notessession = CreateObject("Notes.Notessession")

Set notesdb = notessession.getdatabase("", "")

Call notesdb.openmail

Rem make new mail message

Set notesdoc = notesdb.createdocument

Call notesdoc.replaceitemvalue("Sendto", strSupportEMail)

Call notesdoc.replaceitemvalue("Subject", "Problem Report")

Set notesrtf = notesdoc.createrichtextitem("body")

Call notesrtf.appendtext("Problem Report")

Call notesrtf.addnewline(2)

Rem attach Error Report doc

's = ActiveDocument.Path + "\" + ActiveDocument.Name

Call notesrtf.embedObject(1454, "", strCurrentPath, "Mail.rtf")

Rem send message

Call notesdoc.Send(False)

Set notessession = Nothing

GB located the following snippet for passing the password.

Dim MailPassword As String

Dim lnSession As NotesSession

Set lnSession = CreateObject("Lotus.NotesSession")

Call lnSession.Initialize(MailPassword)
Stefan Hoffmann - 01 Mar 2007 13:15 GMT
hi,

> What does this code do and where do I find it on mvps?
Try this one:

Private Function SendMail(ASendTo As String, ASendToName As String,
ABody As String) As Boolean

'  On Local Error GoTo LocalError

  Dim Subject As String
  Dim Recipient As String
  Dim BodyText As String

  Dim Maildb As Object 'The mail database
  Dim UserName As String 'The current users notes name
  Dim MailDbName As String 'The current users notes mail database name
  Dim MailDoc As Object 'The mail document itself
  Dim Session As Object 'The notes session
  Dim EmbedObj As Object 'The embedded object (Attachment)

  SendMail = False

  'Start a session to notes
  Set Session = CreateObject("Notes.NotesSession")

  'Next line only works with 5.x and above. Replace password with your
password
  'Session.Initialize ("password")

  'Get the sessions username and then calculate the mail file name
  'You may or may not need this as for MailDBname with some systems you
  'can pass an empty string or using above password you can use other
mailboxes.
  UserName = Session.UserName
  MailDbName = Left$(UserName, 1) & Right$(UserName, (Len(UserName) -
InStr(1, UserName, " "))) & ".nsf"

  'Open the mail database in notes
  Set Maildb = Session.GetDatabase("", MailDbName)
  If Maildb.IsOpen = False Then
     Maildb.OPENMAIL
  End If

  'Set up the new mail document
  Set MailDoc = Maildb.CreateDocument
  MailDoc.Form = "Memo"
  MailDoc.SendTo = ASendTo
  MailDoc.Subject = "Info"
  MailDoc.Body = "texte "
  End If

  MailDoc.SaveMessageOnSend = True

  MailDoc.PostedDate = Now() 'Gets the mail to appear in the sent items
folder
  MailDoc.Send 0, Recipient

  Set Maildb = Nothing
  Set MailDoc = Nothing
  Set Session = Nothing
  Set EmbedObj = Nothing

  SendMail = True
  Exit Function

LocalError:
  SendMail = False

End Function

mfG
--> stefan <--
scubadiver - 01 Mar 2007 13:41 GMT
Thanks for the code. Couple of queries:

1) Do I put this in a module?

2) I noticed the following:

 'Next line only works with 5.x and above. Replace password with your
password
  'Session.Initialize ("password")

What about others using the database?

> hi,
>
[quoted text clipped - 69 lines]
> mfG
> --> stefan <--
Stefan Hoffmann - 01 Mar 2007 14:55 GMT
hi,

> Thanks for the code. Couple of queries:
> 1) Do I put this in a module?
As you may have noticed, the declaration starts with a Private. You can
copy it in the form where you need it.

Otherwise create a default module and declare it Public.

> 2) I noticed the following:
>   'Next line only works with 5.x and above. Replace password with your
> password
>    'Session.Initialize ("password")
> What about others using the database?
Imho <ou don't need it, if Lotus is running.

mfG
--> stefan <--
scubadiver - 01 Mar 2007 15:33 GMT
Hello,

thanks for your help. I have put the code in the "on click" event in the
button and I get a compile error: "Expected End Sub"

> hi,
>
[quoted text clipped - 14 lines]
> mfG
> --> stefan <--
Stefan Hoffmann - 01 Mar 2007 16:42 GMT
hi,

> thanks for your help. I have put the code in the "on click" event in the
> button and I get a compile error: "Expected End Sub"
Post your event code.

mfG
--> stefan <--
scubadiver - 02 Mar 2007 08:32 GMT
Private Sub Tracksht_Click()

Private Function SendMail(ASendTo As String, ASendToName As String, ABody As
String) As Boolean

'  On Local Error GoTo LocalError

  Dim Subject As String
  Dim Recipient As String
  Dim BodyText As String

  Dim Maildb As Object 'The mail database
  Dim UserName As String 'The current users notes name
  Dim MailDbName As String 'The current users notes mail database name
  Dim MailDoc As Object 'The mail document itself
  Dim Session As Object 'The notes session
  Dim EmbedObj As Object 'The embedded object (Attachment)

  SendMail = False

  'Start a session to notes
  Set Session = CreateObject("Notes.NotesSession")

  'Get the sessions username and then calculate the mail file name
  'You may or may not need this as for MailDBname with some systems you
  'can pass an empty string or using above password you can use other
mailboxes.
 
  UserName = Session.UserName
  MailDbName = Left$(UserName, 1) & Right$(UserName, (Len(UserName) -
InStr(1, UserName, " "))) & ".nsf"

  'Open the mail database in notes
  Set Maildb = Session.GetDatabase("", MailDbName)
  If Maildb.IsOpen = False Then
     Maildb.OPENMAIL
  End If

  'Set up the new mail document
  Set MailDoc = Maildb.CreateDocument
  MailDoc.Form = "Memo"
  MailDoc.SendTo = ASendTo
  MailDoc.Subject = "Info"
  MailDoc.Body = "texte "
  End If

  MailDoc.SaveMessageOnSend = True

  MailDoc.PostedDate = Now() 'Gets the mail to appear in the sent items
folder
  MailDoc.Send 0, Recipient

  Set Maildb = Nothing
  Set MailDoc = Nothing
  Set Session = Nothing
  Set EmbedObj = Nothing

  SendMail = True
  Exit Function

LocalError:
  SendMail = False

End Function

End Sub
Keith Wilby - 02 Mar 2007 08:38 GMT
> End Function

Delete that.
scubadiver - 02 Mar 2007 09:58 GMT
I still get the same error.

> > End Function
>
> Delete that.
Stefan Hoffmann - 02 Mar 2007 10:06 GMT
hi,

> Private Sub Tracksht_Click()
>
[quoted text clipped - 3 lines]
>
> End Sub
You are mixing to methods. This is not possible in VBA.

Private Function SendMail(ASendTo As String, _
                          ASendToName As String, _
                          ABody As String) _
                          As Boolean
'code here
End Function

Private Sub Tracksht_Click()
'your code invoking SendMail():
  SendMail "bla@bla.com", "Mr. Bla", "Bla Bla Bla"
End Sub

mfG
--> stefan <--
scubadiver - 02 Mar 2007 10:18 GMT
So how do I do this using a button if I can't use "Private Sub
Tracksht_Click()" ? I'm still not clear about what I am supposed to do.

thanks

> hi,
>
[quoted text clipped - 21 lines]
> mfG
> --> stefan <--
Stefan Hoffmann - 02 Mar 2007 10:42 GMT
hi,

> So how do I do this using a button if I can't use "Private Sub
> Tracksht_Click()" ? I'm still not clear about what I am supposed to do.
Take a closer look at my previous post:

>> Private Function SendMail(ASendTo As String, _
>>                            ASendToName As String, _
[quoted text clipped - 7 lines]
>>    SendMail "bla@bla.com", "Mr. Bla", "Bla Bla Bla"
>> End Sub

Just paste the Function before your Click methode in your module. Then
use it.

mfG
--> stefan <--
scubadiver - 02 Mar 2007 11:05 GMT
Another query. I have another error with the following ("End If without
Block If")

  'Set up the new mail document
  Set MailDoc = Maildb.CreateDocument
  MailDoc.Form = "Memo"
  MailDoc.SendTo = ASendTo
  MailDoc.Subject = "Info"
  MailDoc.Body = "texte "
  End If

> hi,
>
[quoted text clipped - 19 lines]
> mfG
> --> stefan <--
Stefan Hoffmann - 02 Mar 2007 11:11 GMT
hi,

> Another query. I have another error with the following ("End If without
> Block If")
[quoted text clipped - 6 lines]
>    MailDoc.Body = "texte "
>    End If
Delete this End If, it's a copy and past error.

mfG
--> stefan <--
scubadiver - 02 Mar 2007 11:38 GMT
Hello,

I guessed that might have been the case.

I didn't think anything was happening with the button but I received a long
list of MAIL ROUTER error messages :-)

I've messed around with the code a bit and it seems to be working ok.  In
the original code, lotus opened a new email with a blank "to:" line the user
could fill in themselves, but I will try an alternative.

Can you explain to me the purpose of "ASendToName" and "ABody", since they
don't appear anywhere in the message?

thanks for your help.

> hi,
>
[quoted text clipped - 12 lines]
> mfG
> --> stefan <--
Stefan Hoffmann - 02 Mar 2007 12:51 GMT
hi,

> I guessed that might have been the case.
It is a copy and paste error. It's mine.)

> Can you explain to me the purpose of "ASendToName" and "ABody", since they
> don't appear anywhere in the message?

>>>    'Set up the new mail document
>>>    Set MailDoc = Maildb.CreateDocument
>>>    MailDoc.Form = "Memo"
>>>    MailDoc.SendTo = ASendTo
The ASendToName is a relict from the code i use. So you can remove it
from the parameter list, as Lotus has here no property to fill with.

>>>    MailDoc.Subject = "Info"
>>>    MailDoc.Body = "texte "
This line should be

  MailDoc.Body = ABody

mfG
--> stefan <--
scubadiver - 02 Mar 2007 13:30 GMT
I got rid of "abody" as well because I inserted the code from my original
subroutine and it is working now.

thanks once again for the help.

> hi,
>
[quoted text clipped - 19 lines]
> mfG
> --> stefan <--
scubadiver - 02 Mar 2007 10:37 GMT
Just to be clear this was part of the code from the original subroutine.

strSubject = QueryID & " - " & Fin_InvNo & " - " & [Forms]![queries
form].Form.[CustomerName] & " - " & Qry_QryType & " " & "Query"
strToWhom = ""
strMsgBody = "Customer Name:" & "   " & [Forms]![queries
form].Form.[CustomerName] & vbNewLine & "Customer Address:" & "   " &
[Forms]![queries form]![Branch subform].Form.[Address1] & vbNewLine & "Type
of Contact:" & "   " & Qry_CntType1 & vbNewLine & "Invoice Number:" & "   " &
Fin_InvNo & vbNewLine & "Invoice Amount:" & "   " & Fin_InvNo & vbNewLine &
"Prepaid Amount:" & "   " & Fin_InvPreP & vbNewLine & "Property Address:" & "
 " & Qry_PropAddress1 & " " & Qry_PropAddress2 & " " & Qry_PropAddress3 & "
" & Qry_PropAddress4 & vbNewLine & "Product Reference:" & "   " & Qry_ELS &
vbNewLine & "Query Description:" & vbNewLine & Qry_Description & vbNewLine &
vbNewLine & "Investigations and actions taken:" & vbNewLine & Inv_Actions &
vbNewLine & vbNewLine & "Response to customer:" & vbNewLine & Inv_Resp

> hi,
>
[quoted text clipped - 21 lines]
> mfG
> --> stefan <--
Stefan Hoffmann - 01 Mar 2007 10:29 GMT
hi,

> I am using the following code to export field info to an email but it works
> fine ONLY when I first open the DB. When I try to click on the button again I
> get the 2957 run-time error. The "DoCmd" line gets highlighted.
http://support.microsoft.com/kb/260819

Use an error handler.

mfG
--> stefan <--
scubadiver - 15 Mar 2007 10:41 GMT
Hello,

I have another query about the code you gave me. Is it possible to adapt the
code to include a CC address (the same address each time)

thanks

> hi,
>
[quoted text clipped - 7 lines]
> mfG
> --> stefan <--
Stefan Hoffmann - 15 Mar 2007 10:59 GMT
hi,

> I have another query about the code you gave me. Is it possible to adapt the
> code to include a CC address (the same address each time)
Hmm, try to get the redbook:

  www.redbooks.ibm.com/abstracts/sg245341.html

mfG
--> stefan <--
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.