Código para enviar pdf según Dni

¿Podéis echarme una manilla?. Tengo una tabla en access con nombre, dni y mail de clientes y necesito que con un click el sistema busque en una carpeta los pdf guardados por dni y se los envíe a cada uno el suyo por mail.

1 respuesta

Respuesta
2

No dices si quieres que lo haga de uno en uno o que vayan todos de una vez, aunque el resultado final, es en ambos que te los ponga en la bandeja de salida de Outlook.

Vamos a suponer que tienes el formulario que dices, con los controles Nombre, email y DNI. Supongamos también que los archivos a enviar están en la carpeta

c:\users\yoquese\documents\borrar

En forma

22222222F.pdf

33333333D.pdf

Etc

En el formulario ponle un botón y en el evento Al hacer clic crea un procedimiento de evento y ponle el código

Dim i As Byte
For i = 1 To Me.Recordset.RecordCount
Dim objOutlook As Object
Dim objItem As Object
Dim objNamespace As Object
Dim ADJUNTO As Variant, Adjunto1 As Variant
Set objOutlook = CreateObject("Outlook.Application")
Set objNamespace = objOutlook.GetNamespace("MAPI")
Set objItem = objOutlook.CreateItem(olMailItem)
objNamespace.Logon "EXCELSPACE", , True, True
ADJUNTO = "c:\users\yoquese\documents\borrar\" & "" & Me.DNI & "" & ".pdf"
With objItem
  .attachments.Add (ADJUNTO)
  .Display
  .to = "" & Me.Email & ""
  .CC = ""
  .BCC = ""
  .Subject = "Estimado amigo"
  .Body = "Te mando esta facturilla por si tuvieras a bien abonarmela"
  .Send
End With
objNamespace.Logoff
Set objOutlook = Nothing
Set objItem = Nothing
Set objNamespace = Nothing
DoCmd.GoToRecord , , acNext
Next

En este caso, te "manda" a la bandeja de salida el primer registro, se va al segundo, te lo manda y así, hasta...

Mil ¡Gracias!, voy a probar y te digo algo. quiero que lo mande uno a uno a cada uno a su mail según su DNI.

Hola lo acabo de probar y es perfecto eres un crack, pero me aparece un error cuando no encuentra algún fichero correspondiente a algún dni. por ejemplo, si con mi dni no hay ningún pdf en la carpeta da error. no se si me comprendes. como hago para que no de error, si no que pase al siguiente que tenga pdf asociado.

No había pensado en eso. Mira, si en una carpeta llamada Presupuestos tengo

Y tengo la tabla

A la pobre María no le mando nada, que se fastidie.

En el formulario basado en esta tabla pulso el botón

Me va pasando los que existen a Outlook

Como te decía, con María ni me hablo.

El código es

Private Sub Comando7_Click()
Dim i As Byte
For i = 1 To Me.Recordset.RecordCount
If Dir$("c:\users\cabarcos\documents\presupuestos\" & "" & Me.DNI & "" & ".pdf") = "" Then
DoCmd.GoToRecord , , acNext
Else
Dim objOutlook As Object
Dim objItem As Object
Dim objNamespace As Object
Dim ADJUNTO As Variant, Adjunto1 As Variant
Set objOutlook = CreateObject("Outlook.Application")
Set objNamespace = objOutlook.GetNamespace("MAPI")
Set objItem = objOutlook.CreateItem(olMailItem)
objNamespace.Logon "EXCELSPACE", , True, True
ADJUNTO = "c:\users\cabarcos\documents\presupuestos\" & "" & Me.DNI & "" & ".pdf"
'Adjunto1 = "" & Me.Archivo1 & ""
With objItem
  .attachments.Add (ADJUNTO)
  '.attachments.Add (Adjunto1)
  .Display
  .to = "" & Me.Email & ""
  .CC = ""
  .BCC = ""
  .Subject = "Estimado amigo"
  .Body = "Te mando esta facturilla por si tuvieras a bien abonarmela"
  .Send
End With
objNamespace.Logoff
Set objOutlook = Nothing
Set objItem = Nothing
Set objNamespace = Nothing
DoCmd.GoToRecord , , acNext
End If
Next
End Sub

Es decir, primero comprueba si existe ese archivo con el DNI que figura en el formulario, Si existe lo envía y se va al siguiente registro. Si no existe, se va directamente al siguiente registro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas