¿Se puede enviar un registro de access que contiene "datos adjuntos" por correo electrónico outlook?

Los miembros de esta comunidad! Les comento, tengo una base de datos en la cual adjunto archivos para cada registro, sin embargo, después de completar el registro, quisiera enviar este registro junto con los archivos adjuntos por correo electrónico mediante un botón, ¿cómo puedo hacer esto? Le agradezco mucho su atención y espero me puedan apoyar.

1 Respuesta

Respuesta
2

Aquí respondí a la misma cuestión: Enviar por Correo archivo adjunto en un campo access

Te dejo de nuevo el archivo de ejemplo, porque el enlace de la respuesta anterior está caído: https://drive.google.com/file/d/1PjEdoM14v9q8p4SNsJ0-g8NuB4wM847T/view?usp=sharing 

Hola de nuevo Sveinbjorn, muchas gracias por el aporte, sin embargo no me funciona el código de forma correcta, me sale el error " Error 3265: No se encontró el elemento en esta colección"

Dentro del Código que me hiciste favor de entregarme, los personalice de acuerdo mis datos e inclusive le quite el message box para ingresar la dirección, lo dejé para que en automático me abra un mensaje nuevo en outllok, y si lo abre y contiene el dato adjunto del Informe generado, pero no me adjunta los "archivos" dentro del registro de la base. Cabe mencionar que cambie "ID" por "Id_Gral" porque así se llama mi campo.

Te agradeceré me puedas apoyar con este tema.

Saludos!!!

P.D. El código quedó así:

Private Sub Comando328_Click()
'Requiere registrar las librería "Microsoft Outlook x.xx Object Library"
    ' Declara las variables
    Dim Olk As Outlook.Application
    Dim OlkMsg As Outlook.MailItem
    Dim laDireccion As String
    'Crea los objetos
    Set Olk = CreateObject("Outlook.Application")
    Set OlkMsg = Olk.CreateItem(olMailItem)
    ' Añade los datos del mensaje y los adjuntos
    With OlkMsg
        .To = laDireccion
        .Subject = "Solicitud de pago " & Me.Nombre_Proveedor & ""
        .Body = "Buen día. Por este medio solicito se programe el pago que se solicita en el presente correo. Observaciones: " & Me.Observaciones & " Gracias."
        'Extrae los adjuntos a una carpeta
        extraeAdjuntos Me.Id_Gral
        'Carga los adjuntos mensaje
        Dim archivo As String
        archivo = Dir("W:\Adjuntos\*.*")
        Do While Len(archivo) > 0
            .Attachments.Add "W:\Adjuntos\" & archivo
            archivo = Dir()
        Loop
        DoCmd.OutputTo acOutputReport, "PPA", acFormatPDF, "W:\Adjuntos\Informe PPA.pdf"
        .Attachments.Add "W:\Adjuntos\Informe PPA.pdf"
        .Display         ' Muestra el mensaje para enviarlo "a mano"
    End With
    'Borra lo adjuntos extraídos
    borraAdjuntos
    ' Destruye los objetos
    Set OlkMsg = Nothing
    Set Olk = Nothing
End Sub
Sub extraeAdjuntos(elId_Gral As Long)
    Dim rst As DAO.Recordset
    Dim rstAdj As DAO.Recordset2
    Dim misAdjuntos As DAO.Field2
    On Error Resume Next
    MkDir "W:\Adjuntos"
    On Error GoTo sol_err
    Set rst = Me.RecordsetClone
    rst.FindFirst "Id_Gral=" & elId_Gral
    Set misAdjuntos = rst("Adjuntos")
    Set rstAdj = misAdjuntos.Value
    rstAdj.MoveFirst
    Do Until rstAdj.EOF
        rstAdj.FileData.SaveToFile "W:\Adjuntos\"
        rstAdj.MoveNext
    Loop
Salida:
    Exit Sub
sol_err:
    If Err.Number <> 3021 Then MsgBox "Error " & Err.Number & ": " & Err.Description
End Sub
Sub borraAdjuntos()
    On Error Resume Next
    Kill "W:\Adjuntos\*.*"
    RmDir "W:\Adjuntos\"
End Sub

Comprueba que tengas registradas las mismas referencias que las del ejemplo.

Por la descripción del error, ese puede ser el problema, o bien que haya algún nombre en el código que no hayas adaptado de mi ejemplo a tu caso particular, pero al no saber en qué linea te salta ese error, poco más te puedo decir...

¡Muchas Gracias Sveinbjorn! Ya di con el error, el cual fue porque el campo de "Adjuntos" no coincidía con el nombre de mi campo, lo cambie en tu código y listo! Está excelente este aporte!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas