Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado
Logo Excel Avanzado

Enviar libro activo como adjunto en correo

| 4 Comments

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

CELDA1

 

Elegir: Microsoft OutLook (_Version_) Object Library.

celda2

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.

email1

 

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”)

email3

El botón se muestra en la hoja adjunta.

email2

Ejecutando el código adjunto muestra la siguiente  imagen.

email1

Por:  Erik Quispe

Author: Erick Gustavo Quispe Durand

Ingeniero Industrial de UNMSM, con especialidad en Supply Chain Management y SAP-CO-MM-FI conocimiento basicos en HR y RE. Especialista en desarrollo de programas de gestion estrategica.

4 Comments

  1. 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

  2. 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

  3. 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

  4. Buenas tardes, muchas gracias por la ayuda, solo tengo un problema si solo quiero mandar la hoja activa, como le hago?

Deja un comentario

Required fields are marked *.


Excel Avanzado located at , Lima, Perú . Reviewed by usuarios rated: 4.7 / 5