Necesito una macro que envíe por mail el mismo archivo en que se encuentra esta.

El código es el siguiente:

Public Sub Enviar_Mail()
Dim objOutlook As Outlook.Application
Dim objSession As Outlook.Namespace
Dim objMessage As Outlook.MailItem
Dim objRecipient As Object
Dim Fichero As String
Dim Destino As String
Fichero = ActiveWorkbook.Path & "\" & ActiveWorkbook.Name
'Suponiendo que tienes una lista de 10 destinatarios en la columna Z de la Hoja1
For I = 1 To 1 'suponiendo que es solo un destinatario'
Set objOutlook = CreateObject("Outlook.Application")
Set objSession = objOutlook.GetNamespace("MAPI")
Set objMessage = objOutlook.CreateItem(olMailItem)
Destino = Hoja1.Cells(I, Range("Z1").Column)
Set objRecipient = objSession.CreateRecipient(Destino)
objSession.Logon
objMessage.Recipients.Add (objRecipient)
objMessage.Subject = "Prueba"
objMessage.Body = "Esta es una Prueba"
objMessage.Attachments.Add (Fichero)
objMessage.Send
objSession.Logoff
Next I
'objMessage.Display
MsgBox "Mensaje enviado exitosamente!"
Set objRecipient = Nothing
Set objOutlook = Nothing
Set objSession = Nothing
Set objMessage = Nothing
End Sub

Pero este arroja error indicando que debe ingresar un destinatario, y el destinatario si esta en la hoja1 Z1.

Su

1

1 Respuesta

806.975 pts. Excel avanzado y VBA

Te recomiendo este código para mandar el archivo actual:

(Claro está, para enviar nuestro actual archivo, ha tenido que ser grabado previamente en el disco duro). Tanto el destinatario, el asunto y el cuerpo lo puedes referenciar a alguna celda de excel. No olvides puntuar y finalizar la consulta

Sub correo()

Set fase1 = CreateObject("outlook.application")

Set fase2 = fase1.createitem(olmailitem)

fase2.to = "[email protected]"

fase2.Subject = "este es el asunto"

fase2.body = "texto.....texto....texto"

fase2.attachments.Add ActiveWorkbook.FullName

fase2.send

Set correo1 = Nothing

Set correo2 = Nothing

End Sub

Estimado muchísimas gracias, solo tengo solo 2 consultas adicionales

1.- se puede dejar la macro programada para que el archivo lo envíe  automáticamente en 3 horarios distintos?

2.- se puede programar para que en ves de utilizar la cuenta de Outlook se conecte automáticamente a una cuenta Gmail por ejemplo y luego envíe el archivo?

Muchas gracias!!!

RO

Para la segunda pregunta no tengo la respuesta. Solo sé vincular excel con outlook.

En cuanto a la primera lo puedes programar con el método ontime, sería algo así:

Sub programa()

Application. OnTime TimeValue("18:36:00"), "envío"

Application. OnTime TimeValue("21:36:00"), "envío"

Application. OnTime TimeValue("23:36:00"), "envío"

End Sub

Esta macro ejecutará la macro "envío" a las 18:36, a las 21:36 y a las 23:36

Pero es necesario dejar ejecutada la macro programa, por lo que sería recomendable dejarla en la macro auto_open(), por ejemplo.

Recuerda finalizar y puntuar

Muchas Gracias y como quedaría si la integro con la otra macro, para que sea auto open?

Gracias

RO

La macro auto_open sería así:

sub auto_open()

Application. OnTime TimeValue("18:36:00"), "envío"
Application. OnTime TimeValue("21:36:00"), "envío"
Application. OnTime TimeValue("23:36:00"), "envío"
End Sub

Siempre lo recuerdo: finalizar y puntuar.

Pero seria una Macro aparte de la del envío del mail?

Si claro, esa macro se autoejecutará cuando abras el archivo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas