Unir varios campos para crear uno solo para envío de emails múltiples

Tengo un formulario que muestra una relación de clientes con sus correspondientes direcciones de correo.

A través de un botón marco el cliente que interesa que se le envíe un correo.

Me interesa tener un Campo Final donde se encadenen todas direcciones de los Clientes que he marcado separados por un: ; para poder realizar el mismo correo a cada uno de ellos.

Campo Final -> [email protected];[email protected];[email protected]........

1 respuesta

Respuesta
2

Juan: Dependerá de como tu tengas la estructura, pero una idea es que uses un Recordset para ir concatenando los eMails.

Aproximadamente así:

Dim StrSQL As String, LaListaEMails As String
Dim Rst As DAO.Recordset
LaListaEMails = “”
StrSQL = “SELECT MailCliente FROM LaTabla WHERE “ & LaCondicion
Set Rst = currentDB.OpenRecordset(StrSQL, dbOpenSnapShot)
If Not Rst.EOF And Not Rst.BOF Then
    Rst.MoveLast
    Rst.MoveFirst
    Do While Not Rst.EOF
         LaListaEMails = LaListaEmails & Rst!MailCliente & “;”
         Rst.MoveNext
    Loop
    LaListaEMails = Left(LaListaEMails, Len(LaListaEMails) - 1)
Else
    MsgBox "Este Recordset está vacío",vbCritical,"RECORDSET SIN DATOS"
End If

Al final, en la variable LaListaEMails tendrás lo equivalente al To.:

Adapta a tus Nombres: MailCliente, LaTabla...

Espero te ayude. Saludos >> Jacinto

StrSQL = “SELECT MailCliente FROM LaTabla WHERE “ & LaCondicion

Hola Jacinto, gracias por tu ayuda.

Tengo problemas con estas dos líneas:

Los datos que utilizo son:

Tabla: RECORDATORIOS

Email: Correo

Tengo problemas con estas dos líneas, en las dos me dice: se esperaba un fin de instrucción, cuando adapto mis datos

En el campo: & La condición , no se exactamente a cual corresponde ya que esta función se realiza al pulsar el botón de anexión.

StrSQL = “SELECT MailCliente FROM LaTabla WHERE “ & LaCondicion
LaListaEMails = LaListaEmails & Rst!MailCliente & “;”

Juan: LaCondicion no es ningún "Nombre de Campo", es el condicional para que la consulta StrSQL, te devuelva "Solo" aquellos registros que deseas.

Si es que en Recordaorios, tienes los eMails a los que "SI" quieres incluir en la opción To.: De corre entonces

Dim StrSQL As String, LaListaEMails As String
Dim Rst As DAO.Recordset
LaListaEMails = “”
StrSQL = “SELECT Correo FROM RECORDATORIOS;"
Set Rst = currentDB.OpenRecordset(StrSQL, dbOpenSnapShot)
If Not Rst.EOF And Not Rst.BOF Then
    Rst.MoveLast
    Rst.MoveFirst
    Do While Not Rst.EOF
         LaListaEMails = LaListaEmails & Rst!Correo & “;”
         Rst.MoveNext
    Loop
    LaListaEMails = Left(LaListaEMails, Len(LaListaEMails) - 1)
Else
    MsgBox "Este Recordset está vacío",vbCritical,"RECORDSET SIN DATOS"
End If

Juan: Le faltaba poco a mi respuesta, pero le he dado al Enviar sin tener que hacerlo.

Comentarte que en la Variable LaListaEMails tendrás la lista de destinatarios. Mis saludos >> Jacinto

Hola de nuevo Jacinto.

He copiado todo lo que me has mandado y me sigue marcando en rojo las dos líneas que te había indicado y al pulsar el botón me da error de sintaxis. En la línea

StrSQL = “SELECT Correo FROM RECORDATORIOS;"

Juan: Mira que el Campo se llame exactamente Correo y la Tabla RECORDATORIOS, porque la línea estan simple que no veo donde pueda estar el Error.

Como máximo quita el ; pero no creo que venga de ahí.

A veces en las copias, las comillas fallan, por lo que podrías escribir de nuevo la línea en el Editor de VBA, poniendo las comillas nuevas. Ya me contarás >> Jacinto

Hola Jacinto ya esta solucionado el error eran las comillas que estaban invertidas y esa era la causa del mal funcionamiento.

Muchas gracias por toda tu ayuda.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas