Enviar un pdf por Outlook con una condición en excel

Tengo un código para enviar un pdf por Outlook y funciona perfecto. Ahora, lo que necesito es agregarle una condición:

==> Necesito enviar el pdf solo si hay adjunto otro pdf cuyo titulo comience con la frase "PRES-" (adjunto imagen)

Es decir, antes de enviar el pdf, debo chequear que haya otro adjunto con tales caracterisitcas... Si no es así, no debe enviarse!

¿Alguien podría ayudarme con este dato?

1 Respuesta

Respuesta
1

Puedes poner aquí el código VBA


Haber si entendí.

¿En un correo vas a enviar varios archivos PDF, pero si ya existe un archivo PDF con ciertas características entonces ya no se deben agregar más archivos, pero el correo se debe enviar si o si con los PDF ya cargados?

Ejemplo:

En el correo se deben agregar los siguientes PDF's

1. PRES-0115.pdf

2. FACT-2515.pdf

3. PRES-2233.pdf

El correo se debe generar solamente con los archivos:

1. PRES-0115.pdf

2. FACT-2515.pdf


Si no es así, podrías explicarlo de otra manera.

Dante.

Muchas gracias por la pronta respuesta

El mail llevara varios adjuntos con otros nombres pero la exigencia para que puedan ser enviados es que exista si y solo si uno o más adjuntos con esa característica, caso contrario no podrá enviarse nada en absoluto.

Estoy por entrar a un estudio medico. Ni bien pueda copio un ejemplo de ser necesario

Gracias nuevamente

Que todo salga bien!

Dante, muchas gracias

El código que manejo es el siguiente (lo recibí de Vos oportunamente)

Sub CorreoUnaHoja()
'Enviar una hoja por correo

Application.DisplayAlerts = False
Application.ScreenUpdating = False

des = "[email protected]"

wpath = ThisWorkbook.Path & "\"
nombre = ActiveSheet.Name
Sheets("HOJA").Copy
ActiveWorkbook.SaveAs Filename:=wpath & nombre & ".xlsx", _
FileFormat:=xlOpenXMLWorkbook
ActiveWorkbook.Close
Set parte1 = CreateObject("outlook.application")
Set dam = CreateObject("outlook.application").createitem(0)
dam.To = des 
dam.Subject = "etc etc etc"  '"Asunto"
dam.body = "Les envio la HOJA" 
dam.Attachments.Add wpath & nombre & ".xlsx"

dam.Send 
MsgBox "El Correo fue enviado con éxito" 
End Sub

Ejemplo 1:------------------------------------------------------------------------------------------------------------------------

El correo puede tener 1 O MÁS de los siguientes PDF's:

1. CUENTA-0115.pdf

2. FACT-2515.pdf

3. LOGO-2233.pdf

Como NO hay un adjunto que comience con "PRES-" o "DO-", entonces el mail no debe enviarse

Ejemplo 2:-------------------------------------------------------------------------------------------------------------------------

El correo puede tener 1 O MÁS de los siguientes PDF's:

1. CUENTA-0115.pdf

2. FACT-2515.pdf

3. LOGO-2233.pdf

1. PRES-0115.pdf

2. FACT-2515.pdf

Como HAY un adjunto que comienza con "PRES-", entonces el mail debe enviarse

Ejemplo 3:------------------------------------------------------------------------------------------------------------------------

El correo puede tener 1 O MÁS de los siguientes PDF's:

1. DO-0009999-A-21.pdf

2. FACT-2515.pdf

3. LOGO-2233.pdf

1. PRES-0115.pdf

2. FACT-2515.pdf

Como HAY adjuntos que comienzan con "PRES-" y "DO-", entonces el mail debe enviarse

Por favor avísame si en algo no fui claro

Muchas gracias!

No entiendo algo. La macro que pusiste adiciona solamente un archivo al correo.

Pero tú comentario es: "El correo puede tener 1 O MÁS de los siguientes PDF's:".

¿Cómo puede ser posible eso, si solamente hay un archivo?

¿O quieres que modifique la macro para que puedas agregar más de un archivo?

¿De dónde va a leer los otros archivos?

Es correcta tu apreciación y actualmente adiciona un solo archivo al correo (el pdf de HOJA)

¿Cómo puede ser posible eso, si solamente hay un archivo? ==> solo se adjuntaran al correo el pdf de HOJA y otro de características "PRES-" o "DO-" (use tu ejemplo y sin quererlo te confundí). Si esto ultimo no ocurre, el mail no se debe enviar

¿De dónde va a leer los otros archivos "PRES-" o "DO-"? ==> del escritorio de la notebook o PC en la cual corra la Planilla que tiene este código (allí estarán el/los archivos  "PRES-" o "DO-") 

Según lo planteas, lo correcto seria entonces corregir la macro para que agregue otro adjunto con características "PRES-" o "DO-".... si esto no ocurre, el correo no podrá enviarse. 

Espero haber contestado tus dudas

Gracias nuevamente

No, no estoy entendiendo.

En una carpeta tienes 100 archivos o 4 archivos o cuántos archivos tienes.

¿Quieres qué la macro lea todos los archivos de una carpeta y los ponga en un correo?


Olvida la macro inicial y explica paso a paso qué quieres hacer.

Estoy perdido!

Y sin quererlo te confundí

Eso es lo único claro de tu petición. Realmente estoy confundido.

Tengo un Libro excel el cual una de sus hojas debe completarse en todos sus campos

Una vez hecho esto, necesito apretar un botón que está en la hoja y enviarla por correo como archivo pdf.

El correo debe salir solo si además, se le adjunta otro documento en pdf, el que refiero con característica "PRES-" o bien "DO-" 

Este pdf que comienza con PRES- o bien con DO- estará en el escritorio de la PC (será el único que figure allí)

Necesito buscarlo allí y que lo adjunte

Si lo encuentra y por lo tanto lo adjunta, el correo puede salir, caso contrario no.

Por ultimo borrar el archivo "PRES-" o bien "DO-"  del escritorio.

Dante, estoy armando este libro para que lo use un vendedor y me envíe archivos que si o si necesito para poder trabajar. Si no los envía tal y como necesito, no servirá, por eso quiero exigirle que, además de enviarme la HOJA completa, le adjunte otro archivo especifico.

Gracias

Daniel.

Si no los envía tal y como necesito, no servirá

Ahora me entiendes, cuando NO envías la información completa. Si no me explicas exactamente qué quieres, no voy a entender, y por lo tanto, no podré entregarte una solución.


Preparo la macro y te la envío.

Prueba lo siguiente:

Sub CorreoUnaHoja_y_UnArchivo()
'Por.Dante Amor
  'Enviar una hoja por correo y un archivo
  Dim des As String, wpath As String, nombre As String
  Dim escritorio As String, sArchivos As String, doc As String
  Dim dam As Object
  '
  Application.DisplayAlerts = False
  Application.ScreenUpdating = False
  '
  des = "[email protected]"
  'des = "damor"
  escritorio = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\"
  wpath = ThisWorkbook.Path & "\"
  nombre = ActiveSheet.Name
  '
  sArchivos = Dir(escritorio & "PRES-" & "*.pdf")
  If sArchivos <> "" Then
    doc = escritorio & sArchivos
  Else
    sArchivos = Dir(escritorio & "DO-" & "*.pdf")
    If sArchivos <> "" Then
      doc = escritorio & sArchivos
    Else
      MsgBox "No existe en el escritorio archivo con 'PRES-' o con 'DO-'", vbCritical
      Exit Sub
    End If
  End If
  '
  ActiveSheet.Copy
  ActiveWorkbook.SaveAs wpath & nombre & ".xlsx", xlOpenXMLWorkbook
  ActiveWorkbook.Close False
  '
  Set dam = CreateObject("outlook.application").createitem(0)
  dam.to = des
  dam.Subject = "etc etc etc"  '"Asunto"
  dam.Body = "Les envío la HOJA"
  dam.Attachments.Add wpath & nombre & ".xlsx"
  dam.Attachments.Add doc
  'dam.Display
  dam.Send
  Kill doc
  MsgBox "El Correo fue enviado con éxito"
End Sub

Dante

Muchas gracias. Hice la prueba colocando 1 archivo de ambos (PRES- y DO-) en el escritorio y adjunto uno (el PRES- y lo borro luego), pero nunca adjuntó el pdf de la HOJA, que originalmente lo hacia la macro.

Gracias!

Tienes que ejecutar la macro en la hoja que vas a enviar.

Prueba nuevamente

O cambia estas líneas

nombre = ActiveSheet.Name
ActiveSheet.Copy

Por estas

Nombre = sheets("HOJA").name

Sheets("HOJA"). Copy

¡Gracias Dante!

Al intentar adaptar el código omití algo que no la adjuntaba

Funciona muy bien

Excelente

.

Es difícil entender lo que necesitas, pero al final, todo se soluciona.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas