Es muy importante el envió de información se oportuna y sencilla. Un claro ejemplo es el uso de macros para realizar estos procesos que de alguna u otra manera nos parece cotidiano.
Como paso previo se debe incluir la activación de la referencia de objetos Outlook.
Herramientas > Referencias
(Para mayor visualización de la imagen, hacer click en la misma)
Elegir: Microsoft OutLook (_Version_) Object Library.
Versión 1.0: Ejecución de macro.
Cabe precisar que tiene algunas condiciones para poder ejecutar la macro que posteriormente se detallara:
- Tener el archivo grabado en la memoria con nombre.
- Tener definido la lista de usuarios a enviar el email.
Código VBA:
Sub enviar_adjunto()
'Declarar variables
Dim OLApp As Outlook.Application
Dim OLMail As Object
'Abrir la aplicacion Outlook y crear el email
Set OLApp = New Outlook.Application
Set OLMail = OLApp.CreateItem(0)
OLApp.Session.Logon
'Detallar los elementos del email, a quienes enviar, titulos y archivo a adjuntar
With OLMail
.To = "xxxx@tsi.net.pe; yyyy@gmail.com"
.CC = "zzzz@hotmail.com"
.BCC = ""
.Subject = "Archivo de datos"
.Body = "Buen dia se adjunta archivo de muestra"
.Attachments.Add ActiveWorkbook.FullName
.Display
End With
'Limpiar datos almacenados en las variables definidas
Set OLMail = Nothing
Set OLApp = Nothing
End Sub
Ejecutando el código adjunto muestra la siguiente imagen.
(Para mayor visualización de la imagen, hacer click en la misma)
Versión 1.2 : Ejecución mediante un Comand Button
Incluir el código en la Hoja activa con el evento seleccionado(en este caso "Click")
El botón se muestra en la hoja adjunta.
Ejecutando el código adjunto muestra la siguiente imagen.
(Para mayor visualización de la imagen, hacer click en la misma)
Por: Erik Quispe
18/06/2015 a las 8:01 am
tengo un código que envía correo HTML, y trato de adjuntar una imagen, antes de enviar el correo se visualiza la imagen, pero no llega a los destinatarios. Ayuda
07/09/2015 a las 9:36 am
Una pregunta, tengo una base de datos donde tengo varias tablas, las que necesito son piezas y proveedor, necesito enviar un e-mail y la direccion de correo electronico la saco de la tabla proveedor del campo "correo" pero tambien en el correo tengo que adjuntar un archivo PDF pero el archivo esta en la tabla piezas y se llama "imagen", este es mi codigo pero me marca error, podrian ayudarme?
Private Sub next_Click()
Dim MyDB As Database
Dim MyRS As Recordset
Dim MyRS2 As Recordset
Dim objOutlook As Outlook.Application
Dim objOutlookMsg As Outlook.MailItem
Dim objOutlookRecip As Outlook.Recipient
Dim objOutlookAttach As Outlook.Attachment
Dim address As String
Dim FileName As String
Dim FilePath As String
Dim rpthola As String
FileName = Me.Clave_MY & "Clave_MY"
FilePath = "I:\Dept\MOE4\Shared4. Información_Administrativa\Documentación\MSE4.1\D. Cahuantzi\reportes\" & FileName & ".pdf"
DoCmd.OutputTo acOutputReport, "Cpendientes", acFormatPDF, FilePath
MsgBox "hola"
Set MyDB = CurrentDb
Set MyRS = MyDB.OpenRecordset("Proveedores")
MyRS.MoveFirst
'Crear sesion Outlook
Set objOutlook = CreateObject("Outlook.Application")
Do Until MyRS.EOF
'Crear el correo
Set objOutlookMsg = objOutlook.CreateItem(olMailItem)
' On Error GoTo Err_next_Click
If Nz(Me.Proveedor, 0) > 0 Then
DoCmd.RunCommand acCmdSaveRecord
DoCmd.OpenReport "NuevaCoti", acViewReport, , , acHidden
c = DLookup("Correo", "Proveedores", "IdProveedor=" & Me.Proveedor & "")
' address = MyRS![Correo]
With objOutlookMsg
'agregar para quien es el mensaje "To"
' Set objOutlookRecip = .Recipients.Add(address)
'objOutlookRecip.Type = olTo
.To = c
.Subject = "Solicitud de Cotizacion"
.Body = "Solicito la cotización del listado adjunto, gracias"
.Attachments.Add FilePath
'Agregar el archivo adjunto al mensaje
'Abrir la base donde esta el archivo
Set MyRS2 = MyDB.OpenRecordset("Piezas")
MyRS2.MoveFirst
If Not IsMissing(AttachmentPath) Then
Set objOutlookAttach = .Attachments.Add(AttachmentPath)
End If
End With
MyRS.MoveNext
DoCmd.Close acReport, "NuevaCoti", acSaveNo
Me.OnUnload = ""
DoCmd.OpenQuery "ActPiezas1"
DoCmd.Close
DoCmd.OpenForm "Administrador"
Else
msj = MsgBox("ES NECESARIO SELECCIONAR UN PROVEEDOR", vbCritical, "ERROR")
End If
Loop
'Exit_next_Click:
' Exit Sub
'
'Err_next_Click:
MsgBox "La cotización no se ha enviado"
' Resume Exit_next_Click
End Sub
06/10/2016 a las 6:04 pm
Buenas tardes,
Cuando corro el código me sale el error de compilación: No se ha definido el tipo definido por el usuario.
Que debo hacer?
Gracias
14/11/2016 a las 1:24 pm
Buenas tardes, muchas gracias por la ayuda, solo tengo un problema si solo quiero mandar la hoja activa, como le hago?
09/03/2017 a las 8:04 pm
Está muy buena la solución, muy directa.
Mi duda es, si quiero enviar el archivo como un documento PDF, ¿qué modificación sería pertinente?
Actualmente ya cuento con una Macro que guarda el documento como PDF con un nombre establecido por mí.
Saludos.
08/10/2019 a las 4:03 pm
necesto una macro para enviar hoja activa de excel usando gmail
24/04/2020 a las 5:24 pm
BUENAS TARDES, ME PODRÍAN AYUDAR POR FAVOR PARA AGREGAR UN ARCHIVO EN .PDF EN UNA CELDA DE EXCEL PARA SER ENVIADO POR OUTLOOK Y EL NOMBRE DEL ARCHIVO ES UN REPORTE EL CUAL CAMBIA CON EL NOMBRE DEL LIDER Y FECHA.
27/10/2022 a las 10:21 am
Hola al adjuntar el libro activo el nombre me aparece con %20 en los espacios del nombre del archivo, que será? Si me pueden ayudar por favor