Access - Recorrer todos los registros y copiar un campo seguido de coma,

 
Vista:
sin imagen de perfil

Recorrer todos los registros y copiar un campo seguido de coma,

Publicado por Javier (71 intervenciones) el 29/03/2017 10:56:56
Buenas foreros, tengo una tabla de access con unos 300 registros de clientes, me gustaría tener la capacidad de enviarle un mensaje de correo electrónico a todos estos registros, utilizando como intermediario outlook, ¿como puedo hacer esto? tengo el código que empleo para enviar un mensaje por outlook a un cliente , si es necesario lo puedo poner
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Recorrer todos los registros y copiar un campo seguido de coma,

Publicado por Norberto (753 intervenciones) el 29/03/2017 12:50:02
Hola.

Te adjunto un ejemplo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
Sub Mail_Workbook_Outlook()
'Es necesario añadir la refeerncia Microsoft Outlook Library (Herramientas/Referencias)
    Dim OutApp As Outlook.Application
    Dim OutMail As Outlook.MailItem
    Dim Rst As DAO.Recordset, Para As String
 
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(olMailItem)
    Set Rst = CurrentDb.OpenRecordset("Emails")
    Do While Not Rst.EOF
        If EmailCorrecto(Rst!Email) Then 'Si el email cumple la sintaxis
            Para = Para & IIf(Para = "", "", ";") & Rst!Email 'Se añade al para separado por ; del anterior
        End If
        Rst.MoveNext    'Vamos al siguiente registro
        DoEvents
    Loop
    Rst.Close
 
    With OutMail
        'Esto es obvio :)
        .To = Para
        .CC = ""
        .BCC = ""
        .Subject = "Asunto del mensaje"
        .Body = "Este es el texto del mensaje"
        'Se pueden adjuntar ficheros
        If Dir("D:\Documento.txt") <> "" Then   'Evitamos que se produzca un error si no existe el archivo
            .Attachments.Add ("D:\Documento.txt")
        End If
        .Send   'Tambien se puede usar .Save y lo situa en Borrador para enviarlo posteriormente
    End With
    Set OutMail = Nothing
    Set OutApp = Nothing
    Set Rst = Nothing
 
End Sub
 
Private Function EmailCorrecto(Email As String) As Boolean
    'Esta función verifica que la dirección de email sea correcta desde un _
     punto de vista de sintaxis (tenga un buzón, una arroba y un dominio)
    Dim iArroba As Integer, iPunto As Integer
 
    iArroba = InStr(1, Email, "@") 'Averiguamos dónde está la primera arroba
    If iArroba > 1 Then 'La @ no puede ser el primer carácter
        If InStr(iArroba + 1, Email, "@") > 0 Then 'Si hay más arroba
            iArroba = 0 'es como si no hubiese ninguna
        Else
            iPunto = InStrRev(Email, ".") 'Averigumos dónde está el último punto
        End If
    End If
    EmailCorrecto = (iArroba > 0) And (iPunto - iArroba > 1) And (Len(Email) - iPunto > 0)
    'El email es correcto si hay una sola arroba y el último punto está al menos a un caracter _
     de la arroba y no es el último carácter
 
End Function

Un saludo,

Norberto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Recorrer todos los registros y copiar un campo seguido de coma,

Publicado por Javier (71 intervenciones) el 30/03/2017 18:26:53
Gracias Norberto en cuanto tenga un poco de tiempo lo miro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Recorrer todos los registros y copiar un campo seguido de coma,

Publicado por Norberto (753 intervenciones) el 31/03/2017 09:07:47
Hola.

Ya me comentarás como te ha ido. Lógicamente tendrás que cambiar los nombres de la tabla, campos, etc. pero creo que te irá bien ya que no suelo mandar nada sin haberlo probado antes.

Un saludo,

Norberto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Recorrer todos los registros y copiar un campo seguido de coma,

Publicado por Javier (71 intervenciones) el 04/04/2017 17:14:34
Norberto buenas,no me termina de funcionar tu ejemplo, como podríamos hacer para que recorra todos los registros de la base y en vez de enviarle el e-mail ,me copie todas las direcciones en un textbox, seguido de coma?, gracias por el interes que estas poniendo, PD: la tabla se llama ALUMNOS, y el campo CORREO ELECTRÓNICO.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Recorrer todos los registros y copiar un campo seguido de coma,

Publicado por Norberto (753 intervenciones) el 05/04/2017 13:15:29
Hola de nuevo.

Te mando un ejemplo que a mí me funciona perfectamente y espero puedas adaptar. Tú insistes en lo de separar con comas pero yo lo he probado y Outlook me obliga a usar punto y coma. Si tu configuración regional es otra, cambias la línea

1
Para = Para & IIf(Para = "", "", "; ") & Rst![Correo Electrónico] 'Se añade al para separado por ; del anterior

por

1
Para = Para & IIf(Para = "", "", ", ") & Rst![Correo Electrónico] 'Se añade al para separado por ; del anterior

y si te sigue fallando, me dices exactamente dónde o si te da un error, en que línea y cuál es.

Un saludo,

Norberto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Recorrer todos los registros y copiar un campo seguido de coma,

Publicado por Javier (71 intervenciones) el 06/04/2017 11:53:04
Genial Norberto , mil gracias por el ejemplo ,ya si me funciona, tenía un error en mi sintaxis y por eso no me funcionaba, tu ejemplo me ha servido para darme cuenta. mil gracias por tu util ayuda. Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar