The source for your report needs to be a query that will match the records to
the appropriate person based upon a form you will build that also includes
text boxes for the recipients name and email address.
Rather than building macros, you should practice building sequenced events
in the "OnClick" events of command buttons.
The following code:
Dim Whatever As ADODB.Recordset
Set Whatever = New ADODB.Recordset
Whatever.Open "table with email addresses", CurrentProject.Connection,
adOpenStatic
Do Until Whatever.EOF
[Forms]![frm_1].[txtfield1].Value = Whatever![Name]
[Forms]![frm_1].[txtfield2].Value = Whatever![E_Mail]
On Error Resume Next
DoCmd.SendObject acSendReport, "YourReport", acFormatSNP,
[Forms]![frm_1].[txtEmail], , , "emailsubject", , True
On Error Resume Next
Whatever.MoveNext
Loop
The above runs through a table in your database that has a field for the
name and a field for the email address of those you want to send reports.
You build your form based on that table with txtboxes bound to those fields.
Your query which is the control source for the report you are sending is
referencing those fields to match the records you want in the report.
Good Luck