En este grupo En todos

Foro de Access



Formulario que envie correos masivos con adjutos en access

Luis
Panamá, Panamá
Escrito por Luis
el 23/07/2009

Que tal Juan, soy de Panamà, y estoy tratando de hacer un formulario en access que mande correos masivamente de un tabla de cliente y un campo de email con un adjunto en. Pdf , pero no he podido.

Se que eres un experto reconocido por lo tanto quise comunicarme contigo a ver si me envias algun formulario de ejemplo para esta aplicacion. Agradecere mucho tu ayuda.

Me podrias mandar ese ejemplo a este correo lmendez44@hotmail. Com

Saludos de Panamà

Luis Mèndez

Juan Cots
Valencia, España
Escrito por Juan Cots
el 23/07/2009

Hola Luis.
En mi blog tienes un ejemplo que hace exactamente lo que quieres, se llama "Envio correo masivo" lo tienes en:

https://accessjuancots.blogspot.com

Un saludo

Wildwolf Roy
Historia complutense, madrid
Escrito por Wildwolf Roy
el 25/08/2010

Hola, Juan:

Estoy intentando enviar mensajes de correo electrónica, a través de access, a distintas personas, gracias a un código tuyo, casi lo tengo conseguido.

El problema es que una misma persona puede tener varios registros, entonces, lo que hace es que el mismo e-mail (correcto) lo envía tantas veces como registros tenga asignados ese destinatario.

Ejemplo:
Autor1 - libro 5 y libro 7
Autor2 - libro 9, libro 10, libro11
etc.

el código que estoy utilizando es:
Option Compare Database

Private Sub Comando13_Click()
On Error GoTo Err_Comando13_Click


Screen.PreviousControl.SetFocus
DoCmd. DoMenuItem acFormBar, acEditMenu, 10, , acMenuVer70

Exit_Comando13_Click:
Exit Sub

Err_Comando13_Click:
MsgBox Err. Description
Resume Exit_Comando13_Click

End Sub
Private Sub Comando14_Click()
On Error GoTo Err_Comando14_Click


Screen.PreviousControl.SetFocus
DoCmd. DoMenuItem acFormBar, acEditMenu, 10, , acMenuVer70

Exit_Comando14_Click:
Exit Sub

Err_Comando14_Click:
MsgBox Err. Description
Resume Exit_Comando14_Click

End Sub

Private Sub Comando15_Click()
Dim dbs As Database
Dim qdfNew As QueryDef
Dim rst As DAO. Recordset
Dim strSql As String
Dim Correo As String
Dim identificador As Long
Set dbs = CurrentDb

StrSql = "SELECT * FROM [Prueba]"
Set rst = CurrentDb. OpenRecordset(strSql, dbOpenDynaset)
If rst. EOF = False Then
rst. MoveLast
rst. MoveFirst
Do Until rst. EOF
dbs.QueryDefs.Delete ("ConsultaCorreo")
identificador = rst! IdUsuario
Set qdfNew = dbs. CreateQueryDef("ConsultaCorreo", _
"SELECT * FROM [Prueba] WHERE [Prueba]. IdUsuario = " & identificador)
Correo = rst! Email
DoCmd. SendObject acSendReport, "Cartas", acFormatHTML, Correo, , , _
"Asunto: Envio de Informe ", , False
rst. MoveNext
Loop
End If
dbs. Close
rst. Close
.....
Se que tengo que agrupar, pero he hecho muchas pruebas y.-... Nada

Gracias aunque no lo consigas, Margarita

Wildwolf Roy
Historia complutense, madrid
Escrito por Wildwolf Roy
el 26/08/2010


Buenas tardes, ayer os dirigí una pregunta, pero tal vez no lo hice correctamente, tengo una base de datos de la que quiero sacar informes de cada usuario (con sus datos correspondientes), para enviar por email, a cada uno el suyo, el código que tengo, lo he sacado de una respuesta tuya, es:
Private Sub Comando15_Click()
Dim dbs As Database
Dim qdfNew As QueryDef
Dim rst As DAO. Recordset
Dim strSql As String
Dim Correo As String
Dim identificador As Long
Set dbs = CurrentDb

StrSql = "SELECT * FROM [Usuarios]"
Set rst = CurrentDb. OpenRecordset(strSql, dbOpenDynaset)
If rst. EOF = False Then
rst. MoveLast
rst. MoveFirst
Do Until rst. EOF
dbs.QueryDefs.Delete ("ConsultaCorreo")
identificador = rst! IdUsuario
Set qdfNew = dbs. CreateQueryDef("ConsultaCorreo", _
"SELECT * FROM [Usuarios] WHERE [Usuarios]. IdUsuario = " & identificador)
Correo = rst! Email
DoCmd. SendObject acSendReport, "Cartas", acFormatHTML, Correo, , , _
"Asunto: Envio de Informe ", , False
rst. MoveNext
Loop
End If
dbs. Close
rst. Close

End Sub

RESULTADO: Un mensaje a cada persona, pero con los datos de todos.

¿Puedes decirme algo?. Gracias por anticipado, Margarita

Juan Cots
Valencia, España
Escrito por Juan Cots
el 27/08/2010


Hola Margarita.
El origen de datos del informe "Cartas", debe ser la consulta "ConsultaCorreo", que al crearla debe devolvernos los datos que necesitamos para el informe.
Es decir esta línea:
Set qdfNew = dbs. CreateQueryDef("ConsultaCorreo", _
"SELECT * FROM [Usuarios] WHERE [Usuarios]. IdUsuario = " & identificador)

En tu caso debes adaptarla a tus datos, que no se cuales son, pero supongamos algo así como:
Set qdfNew = dbs. CreateQueryDef("ConsultaCorreo", _
"SELECT * FROM [Libros ] WHERE [ Libros ]. IdUsuario = " & identificador)

Y debes utizar esa consulta como Origen de datos del informe

Wildwolf Roy
Historia complutense, madrid
Escrito por Wildwolf Roy
el 01/09/2010

Hola, de nuevo:
he intentado valorar la respuesta, pero me ha salido fatal y no se como se modifica. Quiero poner que la respuesta ha sido totalmente oportuna y que me ha solucionado el tema.

Perdona por la molestia. Un saludo, Margarita

Juan Cots
Valencia, España
Escrito por Juan Cots
el 01/09/2010

Me alegro mucho que hayas solucionado el tema
Un cordial saludo

Wildwolf Roy
Historia complutense, madrid
Escrito por Wildwolf Roy
el 02/09/2010

Gracias, pero cómo puedo poner más estrellas naranjas?

Wildwolf Roy
Historia complutense, madrid
Escrito por Wildwolf Roy
el 15/09/2010

Hola, Juan:
no se si podrás ayudarme, quiero enviar emails desde access, pero no como objeto, que ya me sale muy bien, si no que, a cada persona le vayan sus datos pero no en fichero, sino en el cuerpo del mensaje.

Gracias por anticipado, Margarita

Wildwolf Roy
Historia complutense, madrid
Escrito por Wildwolf Roy
el 27/09/2010

Buenas tardes, tal vez puedas decirme qué estoy hacuiendo mal, estoy intentando enviar e-mails, sin adjunto (los datos dentro del cuerpo del e-mail), pero algo me falla, se me para en
Dim colrecips
he indica: 'no se ha definido el tipo definido por el usuario'
.
éste es mi código:
.
Function SendMessages()
Rem Option Compare Database

Set myOlApp = CreateObject("Outlook. Application")
Set myNameSpace = myOlApp. GetNamespace("MAPI")
Set mydestfolder = myNameSpace. GetDefaultFolder(olFolderOutbox)
Dim colrecips As Outlook. RECIPIENTS
Dim a, b, c, g, i As String
Dim cnn As New ADODB. Connection
Dim cmd As New ADODB. Command
Dim rs As New ADODB. Recordset
cnn. Open "Provider=Microsoft.Jet.OLEDB.4. 0;Data Source=C:\Documents and Settings\A115627\Mis documentos\Proyecto EV\Terminados\Modificaciones_no_Aceptadas. Mdb;;;"
Set cmd. ActiveConnection = cnn
cmd. CommandText = "SELECT * from Cartas_para_frm ORDER BY IdUsuario"
rs. CursorLocation = adUseClient
rs. Open cmd, , adOpenStatic, adLockBatchOptimistic

a = "Buen día"
b = "te adjunto información extraída de la aplicación, en la que figuran las modificaciones sin aceptar, efectuadas con tu usuario:"
c = "Un saludo,"



rs. MoveFirst

Do Until rs. EOF
Set myitem = myOlApp. CreateItem(olMailItem)
myitem. DeleteAfterSubmit = True

If Len(CStr(rs! IdUsuario)) = 3 Then
myitem. To = CStr(rs! Email)
Else
myitem. To = CStr(rs! Email)
End If


myitem. Subject = "Modificaciones sin aceptar"
myitem. Importance = olImportanceHigh 'High importance

Rem inicio contador de usuarios y anterior
anterior = rs! IdUsuario
contador = 1
g = g & CStr(rs! EXPEDIENTE) & CStr(rs! MODIF_NUM) & CDate(rs! FECHA_MODIF)
Rem aquí pasamos al siguiente registro
rs. MoveNext
Rem bucle de acumulación por oficina
Rem ojo primero ver si no es el final, antes de la segunda comparación
If rs. EOF <> True Then
Do While rs! IdUsuario = anterior
contador = contador + 1
g = g & CStr(rs! EXPEDIENTE) & CStr(rs! MODIF_NUM) & CDate(rs! FECHA_MODIF)

Anterior = rs! IdUsuario
rs. MoveNext
If rs. EOF = True Then Exit Do
Loop
End If
myitem. Body = a + Chr(11) + Chr(11) + Chr(11) + "MODIFICACIONES PENDIENTES: " + Chr(11) + g + Chr(11) + Chr(11) + Chr(11) + b + Chr(11) + Chr(11) + c + Chr(11) + Chr(11)

If myitem.RECIPIENTS.ResolveAll = True Then
'myitem. Move (mydestfolder)
myitem. Send
Else
myitem. Body = myitem. Body + Chr(11) + Chr(11) + Chr(11) + "LA DIRECCION DE CORREO DE LA OFICINA QUE SE MUESTRA MAS ABAJO NO EXISTE. ESTE CORREO DEBE ENVIARSE MANUALMENTE A UNA DIRECCION DE CORREO PERSONAL DE LA OFICINA. " + Chr(11) + Chr(11) + myitem. To
myitem. To = "mi nombre"
'myitem. Move (mydestfolder)
'
myitem. Send
'myitem. Delete
End If

G = " "
Loop
rs. MoveFirst
End Function
.
Gracias por anticipado, Margarita

Wildwolf Roy
Historia complutense, madrid
Escrito por Wildwolf Roy
el 04/10/2010

Hola, Juan: hace 6 días te envié un mensaje, pero no se si lo has recibido. Te agradecería que me ayudaras, pues, pienso jubilarme y quiero dejar un trabajo digno a mis compañeros.

Gracias por anticipado, Margarita

Juan Cots
Valencia, España
Escrito por Juan Cots
el 04/10/2010

Hola Margarita.
¿Tienes activada la referencia a Microsoft Outlook xx?
En cualquier ventana de VBA (antes de que se produzca ningún error)... Herramientas... Referencias.... Buscas la que te menciono y la activas
Un saludo

Wildwolf Roy
Historia complutense, madrid
Escrito por Wildwolf Roy
el 07/10/2010

Hoja, Juan: ya he corregido espacios y he hecho lo que tú me dijiste y me funciona del "10".

Mil gracias, Margarita

Wildwolf Roy
Historia complutense, madrid
Escrito por Wildwolf Roy
el 21/10/2010

> Buenas tardes, Juan: he hecho un cuadro combinado en un formulario, pero no

> consigo que al abrir se vea la referencia que, como sí que me sale al abrir el

> desplegable, como ves en el campo 2, no se si es así o es que he hecho algo

> mal, a mí me parece un poco feo que no salga.

>

> Puedes echarme una manita? Gracias por anticipado, Margarita Ruiz

>

> [cid:image005. Jpg@01CB7080. F05D6B10]

> [cid:image006. Jpg@01CB7080. F05D6B10]

Wildwolf Roy
Historia complutense, madrid
Escrito por Wildwolf Roy
el 28/01/2011

Buenas tardes, tengo un formulario 'frmLibros' en el que hay un combo 'Cuadro combinado29', a su vez hay un subformulario, ambos formularios están vinculados y funciona.
Mi consulta es porque al abrir el formulario, el combo aparece en blanco, sin embargo, el subformulario muestra datos.
Lo que quiero es que:
o bien, al abrir el formulario el combo me muestre el dato correspondiente a lo que me está enseñando el subformulario,
o bien, que ambos estén en blanco (prefiero la primera opción).
Pongo ejemplo porque no se si me explico:
formulario: ha de mostrar el autor de los libros que se muestran en el subformulario.
Gracias por anticipado. Un cordial saludo, Margarita

Juan Gomez
Quetzaltenango, Guat...
Escrito por Juan Gomez
el 26/01/2012

Estimado Juan:
He tenido el gusto de probar tu aplicacion de envio masivo y funciona muy bien excepto la opcion de mostrar la foto como fondo o la de incluir foto subida en internet, quisiera saber si pudieras corregirla (si no estanta la molestia) además quisiera que subieras la otra version que mencionas que envia los correos uno por uno ya que yo envie 2000 correos pero mi ip fue incluido en la lista negra porque consideraron que estaba haciendo spam si fueras tan amable de subirlo o de enviarlo a mi correo que es: jeladiogomez@gmail. Com saludos desde Guatemala