Enviar Archivo en Excel 2007/2010 con Outlook


En el post anterior vimos como podíamos enviar un archivo adjunto desde Excel 2003. En esta ocasión utilizaremos el mismo ejemplo pero para las versiones 2007 0 2010, que son las más recientes.
Es necesario aclarar que el código del post anterior puede funcionar con Excel 2003 con el paquete de compatibilidad de office 2007/2010 pero si utilizan el archivo en una computadora que no lo tiene les va a generar un error.


Es importante tener en cuenta que utilizamos un ejemplo de aplicación pero esta idea puede servir para muchas otras aplicaciones en donde debemos enviar información mediante correo electrónico.
El archivo a adjuntar se trata de la credencial de socio del ejemplo. Ya habíamos visto como generarla, como poder visualizarla y ahora agregamos otra funcionalidad, poder enviarla por mail.
Para ejecutar el códigos se crea una macro llamada “enviar_mail” y se vincula a un objeto, una imagen en forma de sobre.

El código es el siguiente:
----------------------------------------------------------------------------------------------
Sub enviar_mail()
' PabloFSix
' Excelminiapps.blogspot.com
'Defino las variables como objetos de Outlook
    Dim Out As Object
    Dim Omail As Object
'Asigno referencias de objeto a variable
    Set Out = CreateObject("Outlook.Application")
    Set Omail = Out.CreateItem(0)
     'completo los campos necesarios del e-mail
         With Omail
             .To = Sheets("Socio Card").Range("C11").Text
            .Subject = Sheets("Socio Card").Range("D19").Text
            .Body = Sheets("Socio Card").Range("D20").Text
            .Attachments.Add Sheets("Socio Card").Range("D17").Text & "\" & _
            Sheets("Socio Card").Range("C5").Text & ".pdf"
       'Si esta activado el checkbox se visualiza el mensaje sino lo envía directamente
             If Sheets("Socio Card").CheckBox1.Value = True Then
            .Display
            Else
            .Send
            End If
         End With
        'desvinculo la variable de los objetos del Outlook
    Set Omail = Nothing
    Set Out = Nothing
 'si esta desactivada la casilla de verificación muestra el mensaje enviado
    If Sheets("Socio Card").CheckBox1.Value = False Then
    MsgBox "Mail enviado"
    End If
End Sub
----------------------------------------------------------------------------------------------
Como ven el código prácticamente tiene la misma declaración que para el código que utilizamos para Excel 2003, lo único que cambia son los objetos “Outlook mail” que utilizamos, ya que de una versión a otra cambian.

Diferencias en la declaración de Objetos
Para 2003: así se definía
Set Out = New Outlook.Application
Set Omail = Out.CreateItem(olMailItem)
Para 2001/2010: así se define ahora
Set Out = CreateObject("Outlook.Application")
Set Omail = Outmail.CreateItem(0)

Próximamente se va a colgar el archivo de ejemplo en la zona de Descargas. Como el archivo esta en Excel 2007/2010, quizás puedan ejecutarlo para ver el ejemplo.
Les recomendamos que sigan el blog por alguno de los medios, mail o por redes sociales, para recibir las actualizaciones y novedades.

¡Éxitos!

Keys:

2 comentarios:

GABRIEL GHG dijo...

Realmente me parese excelente esta función y mi idea es utilizarla, pero tengo un problema. El caso puntual es que necesito que los mails se envien con formato, es decir que al momento de enviarlo mantenga color, negrita, subrayado, links, etc... ya que lo utilizo para enviar material de descarga a compradores. ¿Habra posibilidad de mantener estas propiedades????. Saludos cordiales. Gabriel

Juan Pablo Torres dijo...

Hola Amigo, gracias por tus comentarios. Puedes escribirnos mediante el formulario de contacto y te respondemos.

Sds