Macro en excel para enviar archivo por e-mail

Necesito saber si hay algún modo de hacer una macro que me envié un libro por correo electrónico mediante Outlook a varios destinatarios claro con asunto y descripción de lo que se envía...
En espera de su gentil ayuda

4 respuestas

Respuesta
1
Sub Correo()
     strReportName = "C:\Clientes.xls"
   Dim objOutlook As Object
   Dim objMail As Object
   Dim objOutlookAttach As Object
   Set objOutlook = CreateObject("Outlook.Application")
      Set objMail = objOutlook.CreateItem(olMailItem)
   Set objOutlookAttach = objOutlook.CreateItem(olAttachMents)
      With objMail
         'A quien va dirigido el correo
         .To = "[email protected]"
         'Se especifica el asunto
         .Subject = "Historico de Clientes"
         'Se especifica lo que se quiere que diga el mensaje
         .Body = "Estimado, adjunto listado de clientes con su capacidad de pago durante el presente año"
         'Se escriben el o los archivos a adjuntar en el mail
         .Attachments.Add (strReportName)
         'Se manda el mensaje
         .Send
      End With
   'Se cierran todos los objetos utilizados
   Set objMail = Nothing
   Set objOutlook = Nothing
End Sub
Solo debes adaptar estos códigos a lo que necesitas y listo.
Respuesta
1

José Manuel,

Sólo añade la siguiente línea al inicio de tu macro:

Shell ("Outlook")

Con esta línea abrirás la aplicación Outlook y con el resto de la macro tu correo sera enviado dejando la aplicación de Outlook abierta. Aunque tuvieras abierta la aplicación de Outlook, la macro te abrirá una nueva ventana de Outlook y tu archivo se enviará sin problema.

Respuesta

Como lo comenta octavo hay que adpatarlo a lo que necesitas te coloco un código muy similar con la diferencia de que primera te lo guarda en la carpeta que tu definas pero en pdf, posteriormente te lo adjunta al outlook y lo envía al correo de los destinatarios elegidos

Public Sub PENDENVIAR()
'Selecciona PENDENVIAR'
Sheets("PENDENVIAR").Select
'controla cualquier posible error, ejecutando en ese caso la línea siguiente
On Error Resume Next
Dim NombreArchivo As String
Hora = Format(Time, "HH.mm.ss")
Teststr = Format(Now(), "Long Date")
NombreArchivo = (Range("D3") & " " & Range("J2") & " " & (Teststr) & " " & (Hora))
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"\\Almacen-plas\h\PENDIENTESDEENVIAR\" & NombreArchivo & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False
ActiveSheet.PrintOut Copies:=0, Collate:=True
'incrementa en 1 la celda J2
ActiveSheet.Range("J2").Value = ActiveSheet.Range("J2").Value + 1
strReportName = "\\Almacen-plas\h\PENDIENTESDEENVIAR\" & NombreArchivo & ".pdf"
Dim objOutlook As Object
Dim objMail As Object
Dim objOutlookAttach As Object
Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(olMailItem)
Set objOutlookAttach = objOutlook.CreateItem(olAttachMents)
With objMail
'A quien va dirigido el correo
.To = "correos principales a donde enviar el pdf"
.Cc = "copia a quienes llegaran el archivo"
'Se especifica el asunto
.Subject = NombreArchivo & ".pdf"
'Se especifica lo que se quiere que diga el mensaje
.Body = "Listado de pedidos pendientes de enviar"
'Se escriben el o los archivos a adjuntar en el mail
.Attachments.Add (strReportName)
'Se manda el mensaje
.Send
End With
'Se cierran todos los objetos utilizados
Set objMail = Nothing
Set objOutlook = Nothing
Sheets("PEDIDO").Select
ActiveWorkbook.Save
End Sub

Respuesta

Una pregunta sobre el tema:

'Se cierran todos los objetos utilizados
Set objMail = Nothing
Set objOutlook = Nothing

Si lo que deseo es abrir Outlook, enviar el email y una vez enviado cerrar OutlooK o si no puede ser así sólo abrir Outlook, enviar y no cerrar.

Gracias por tu respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas