Añadir adjuntos de un listbox a mail vba Access

Envío mails desde Access con VBA y Outlook para lo que utilizo un formulario que contiene todos los datos necesarios para montar el mensaje de correo.

Junto a los mails, invariablemente envío un archivo pdf situado en una tabla relacionada con el registro activo del formulario empleado.

También puedo enviar un adjunto que selecciono a través de un botón de control en el formulario y cuyo vínculo queda en un cuadro de texto del formulario. Utilizo la instrucción para incluir este archivo como adjunto al mail: Set objOutlookAttach = .Attachments.Add(Me.txtAdjuntos.Value)

La dificultad la he encontrado al pretender enviar varios adjuntos mediante instrucciones vba.

He intentado introduciendo los adjuntos deseados en un cuadro de lista, pero no he sido capaz de trasladar esos datos a vba.

¿Alguien puede ayudarme al respecto?

Necesito saber su el cuadro de lista es apto para esa función y la forma de recorrer sus registros y añadir uno a uno a la colección de adjuntos.

Están activadas las librerías necesarias y, como digo, me envía mails con el adjunto por defecto y con o sin el adjunto del cuadro de texto si existe en el mismo, pero no soy capaz de enviar 3 o más adjuntos. Utilizo W10 Pro y Office 2019

1 respuesta

Respuesta
1

Si utiliza una tabla para el nombre de los adjuntos, este fragmento de código le sirve

Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb()
Set rs = db.OpenRecordset("Select EMail from tblEmail")
If rs.RecordCount > 0 Then
With rs
Do Until .EOF
 olMail.Attachments.Add (rs!EMail)
.MoveNext
Loop
End With
End If

Si es un cuadro de lista debe recorrerlo con un FOR EACH()

Muchas gracias por tu rápida ayuda.

El origen de los datos contenidos en el listbox es un directorio externo a la base de datos.

Intentaré recorrerlo con el For Each() indicado e informaré de los resultados.

Gracias de nuevo. 

Eduardo, muchas gracias.

 Finalmente esta es la parte destinada a incorporar adjuntos en mi código para enviar mails a través de la cuenta predeterminada de Outlook.

Utilizo un formulario en cuyos controles de texto introduzco (se automatiza partiendo de una consulta) todos los datos necesarios y el texto predeterminado en función del valor de determinados campos.

Los adjuntos están en una carpeta (ArchivoFacturasPDF) situada en el mismo directorio que la base de datos (CurrentProject.Path)

Campos del formulario:

NumeroFactura = Campo de Texto (porque este adjunto es fijo en todos los envíos y lo localizo por la coincidencia de su número en una carpeta en que está situado)

txtAdjuntos = Campo de Texto (es una alternativa más que está desactivada en el código)

ccAdjuntos = Cuadro Combinado que contiene los links a los pdf a adjuntar, que relleno mediante código, que tiene una sola columna -0-)

Las variables definidas para esta instrucción:

   Dim i As Long

    Dim Adjunto As String

La parte del código para adjuntar:

'Agregar archivos adjuntos al mensaje (Add attachments to the message)

    If Not IsMissing(AttachmentPath) Then

'Primero cogemos el número de factura del registro activo

    vFra = CurrentProject.Path & "\ArchivoFacturasPDF\" & Me.NumeroFactura & ".pdf"

    Set objOutlookAttach = .Attachments.Add(vFra)

'Si tuviéramos un solo adjunto en cuadro de texto txtAdjuntos pondríamos

    'Set objOutlookAttach = .Attachments.Add(Me.txtAdjuntos.Value)

'Si tenemos los adjuntos en un listbox o combobox que hayamos rellenado

'como ya tenemos definidas las variables a utilizar

'Recorremos cada línea del combobox ccAdjuntos

'si fuera un listbox las instrucciones son las mismas cambiando el nombre del control cc por lst

    For i = 0 To Me.ccAdjuntos.ListCount - 1

'Y seleccionamos el contenido de la celda y le damos por nombre Adjunto

    Adjunto = Me.ccAdjuntos.Column(0, i)

'y añadimos ese Adjunto a la colección de adjuntos

    Set objOutlookAttach = .Attachments.Add(Adjunto)

'Y repetimos la operación con el siguiente, hasta el final

    Next i

'Con esto ya hemos añadido el total de adjuntos

 End If

¿Y cuál es su duda?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas