Enviar correo electrónico a registros de BD Access

He hecho esta pregunta en varios lugares, pero nadie me responde y supongo que no soy la única, porque considero que es una duda bastante común.
Tengo una BD en Access 2000 en la que uno de los campos de los registros es "dirección de email". Necesito enviar un correo con gmail o webmail a muchos de esos registros y me gustaría saber si hay alguna manera de hacerlo sin tener que copiar y pegar las direcciones una por una separadas por comas.
Me han hablado de crear un campo calculado en el cual se vayan sumando los emails separados por comas, pero no sé cómo se hace un campo calculado.
¿Alguien tiene paciencia para explicarme esto?

1 respuesta

Respuesta
1
Yo me encontré con em mismo problema, pero el separador de e-mails es el punto y coma.
Creé un código que primero te pone la lista de los mails en un textbox (que yo lo tengo en estado Invisible) llamado Mails, y luego te abre un correo electrónico vacío cogiendo los mails de ese texbox
Aquí tienes el código para hacerlo, modifícalo a tu gusto
 Dim rst As DAO.Recordset
 Dim strSql As String
 Dim strSep As String
 Dim strRes As String
 Dim NomCamp As String
 Dim NomTabla As String
 Dim Separador As String
 Dim DQ As String
 Dim Criteris As String
 NomCamp = "[<nombre del campo con correos electronicos>]"
 NomTabla = "<nombre de la tabla que contiene los datos>"
 Separador = "; "
 DQ = """"   <-- Esto nos va a servir para poder poner comillas en el texto
 Criteris =  <- Aqui ponle los criterios de la tabla
 If Nz(NomCamp, "") <> "" Then
    If Nz(NomTabla, "") <> "" Then
        strSql = "SELECT " & NomCamp & " FROM " & NomTabla & Criteris & ";"
        strSep = Nz(Separador, "")
        Mails.Value = strSql
        Set rst = CurrentDb.OpenRecordset(strSql)
        With rst
            If (Not .EOF) And (Not .BOF) Then
                Do While Not .EOF
                    If IsNull(.Fields(0)) = False Then
                        strRes = strRes & .Fields(0)
                        If Not .EOF Then
                            strRes = strRes & strSep
                        End If
                    End If
                    .MoveNext
                Loop
            End If
        End With
    End If
 End If
 strRes = Left(strRes, Len(strRes) - 2)
 Mails.Value = strRes
 'strRes = DQ & strRes & DQ
DoCmd. SendObject acSendNoObject,,,,, strRes
Wow, muchas gracias porr esponder tan rápido!
Sin duda, parece la solución, pero me temo que te has topado con la lenta de la clase y la verdad es que necesito un "paso por paso".
¿Dónde pego ese código? ¿En el text box? Y ese text box, ¿lo pongo en el formulario de "contactos"? ¿Qué modifico del código? ¿Así?:
NomCamp = "[<Email>]"
 NomTabla = "<contactos>"
 Separador = "; "
DQ = """" <-- Esto nos va a servir para poder poner comillas en el texto
¿Criteris = <- Aqui ponle los criterios de la tabla ?
¿Tengo que modificar esto siempre que salga "NomCamp", ¿no?
Y por último, ¿con qué servidor se envía?
Mil millones de gracias!
Hm, no.
Crea un texbox independiente y le pones como nombre Mails.
Y luego crea un Botón y en el procedimiento del evento "Al hacer click" seleccionas el generador de código y le pegas eso haciendo los cambios pertinentes de nombre tabla y demás...
Si no necesitas criterios, como por ejemplo los que empiecen por A o los que tengan 14 años... no pongas criterios
Hola!
A ver,
estoy en el formulario "direcciones". Creo un cuadro de texto. ¿Ya está?
Luego Creo un botón (¿qué acción le hago hacer a ese botón?)
Si le doy a generar evento en el botón, sin darle ninguna acción, luego le puedo dar a: generador de expresiones, macros y código. ¿A cuál le doy?
Supongo que será "generador de código" Pego tu código, pero no pasa nada.
He pegado esto:
Option Compare Database
Private Sub Texto24_BeforeUpdate(Cancel As Integer)
End Sub
 Dim rst As DAO.Recordset
 Dim strSql As String
 Dim strSep As String
 Dim strRes As String
 Dim NomCamp As String
 Dim NomTabla As String
 Dim Separador As String
 Dim DQ As String
 Dim Criteris As String
 NomCamp = "[<Dirección correo>]"
 NomTabla = "<Direcciones>"
 Separador = "; "
 DQ = """"   <-- Esto nos va a servir para poder poner comillas en el texto
 Criteris =  <- Aqui ponle los criterios de la tabla
 If Nz(NomCamp, "[<Dirección correo>]") <> "" Then
    If Nz(NomTabla, "<Direcciones>") <> "" Then
        strSql = "SELECT " & "[<Dirección correo>]" & " FROM " & "<Direcciones>" & Criteris & ";"
        strSep = Nz(Separador, "")
        Mails.Value = strSql
        Set rst = CurrentDb.OpenRecordset(strSql)
        With rst
            If (Not .EOF) And (Not .BOF) Then
                Do While Not .EOF
                    If IsNull(.Fields(0)) = False Then
                        strRes = strRes & .Fields(0)
                        If Not .EOF Then
                            strRes = strRes & strSep
                        End If
                    End If
                    .MoveNext
                Loop
            End If
        End With
    End If
 End If
 strRes = Left(strRes, Len(strRes) - 2)
 Mails.Value = strRes
 'strRes = DQ & strRes & DQ
 DoCmd.SendObject acSendNoObject, , , , , strRes
Private Sub Comando29_Click()
End Sub
Private Sub Comando35_Click()
End Sub
Private Sub Texto32_BeforeUpdate(Cancel As Integer)
End Sub
Supongo que este código lo habré adaptado mal, pero además no entiendo cómo relacionar el cuadro de texto con el botón...
lo siento... Por favor, ¿me ayudas?
Muchas gracias por anticipado.
Necesito solucionar esto como sea.
En el formulario direcciones creas un cuadro de texto y le pones de nombre "Mails"
Creas un botón, y en el procedimiento del evento al hacer click le pegas el código, ademas debes tener en cuenta que todo lo que te pongo en el código entre corchetes <> hay que substituirlo (incluido los corchetes) por el nombre que tenga en tu base de datos
Ya casi lo tengo!
Mira, ahora cuando le doy click al botón, me sale el cuadro de código y me da el siguiente error: Error de compilación. No se ha definido el tipo por el usuario.
En concreto me marca en amarillo esta línea: Private Sub Comando47_Click()
Que entiendo va antes de tu código...
Un último empujón, por fiii! ;)
Exacto
Ese código va entre
Private Sub Comando47_Click()
y
End sub
Claro, así está.
Entonces, ¿a qué puede deberse el error que te indico que me da?
Has substituido en:
NomCamp = "[<Dirección correo>]"
NomTabla = "<Direcciones>"
¿El nombre del campo donde tienes los e-mails y el nombre de la tabla donde se encuentran?
El nombre del campo es "email" y el de la tabla es "Direcciones".
Este es el principio del código tal cual lo tengo.
Private Sub Comando47_Click()
 Dim rst As DAO.Recordset
 Dim strSql As String
 Dim strSep As String
 Dim strRes As String
 Dim NomCamp As String
 Dim NomTabla As String
 Dim Separador As String
 Dim DQ As String
 Dim Criteris As String
NomCamp = "[<email>]"
 NomTabla = "<Direcciones>"
 Separador = "; "
DQ = """" <-- Esto nos va a servir para poder poner comillas en el texto
Criteris = <- Aqui ponle los criterios de la tabla
De esta manera me da este error al clicar en el botón:
"Error de compilación. No se ha definido el tipo por el usuario."
¿Qué hago mal?
Quitale los <>
Y también quítale los comentarios (<--- Estos)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas