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
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
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!
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!
O cambia estas líneas
nombre = ActiveSheet.Name
ActiveSheet.Copy
Por estas
Nombre = sheets("HOJA").name
Sheets("HOJA"). Copy
- Compartir respuesta