Enviar Archivo en Excel 2003 con Outlook

En muchas de nuestras mini aplicaciones podemos utilizar la posibilidad de enviar mails desde Excel. En este caso en particular, ya que utilizamos un ejemplo anterior “Lista de enlaces a archivos”, además de enviar el mail adjuntamos un archivo.
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.
Podemos utilizar la función de enviar mail desde Excel en muchas otras formas no vistas en este post pero para este caso nos interesa la posibilidad de enviar un archivo adjunto. Por ejemplo, crear lista de envíos, etc.


En general en las mini aplicaciones no diferenciamos entre las versiones, ya que las características “se mantienen” por decirlo así. Sin embargo, en este caso tenemos que hacer la diferenciación ya que el código cambia de una versión a otra.
El código que vamos a ver ahora funciona solo para 2003, luego en otro post veremos el correspondiente al 2007/2010. Podríamos directamente hablar de esta última pero pueden que les guste trabajar en una versión anterior.
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 New Outlook.Application
Dim Omail As MailItem
'vinculo la variable de los objetos del outlook
Set Out = New Outlook.Application
Set Omail = Out.CreateItem(olMailItem)
'completo los campos necesarios del e-mail
    With Omail
     .To = Sheets("Socio Card").Range("C11").Text         ' destinatario de correo
    .Subject = Sheets("Socio Card").Range("D19").Text ' asunto
    .Body = Sheets("Socio Card").Range("D20").Text    ' cuerpo del mensaje
    .Attachments.Add Sheets("Socio Card").Range("D17").Text & "\" &_
                  Sheets("Socio Card").Range("C5").Text & ".pdf"     ' ubicación adjunto
    '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 plante la declaración de dos variables y luego un par de líneas que definen el contenido del mail.
Por otro lado, en la ejecución se va a generar un error cuando se introduzca un “id de socio” que no está en la base de datos o del cual no se imprimió la credencial. Para esto deberíamos prever o un “On Error Resume Next”, porción de código que iría al principio, o utilizar el condicional “if” para evitar la ejecución del código sin un dato valido.
Próximamente se va a colgar el archivo de ejemplo en la zona de Descargas. Como el archivo esta en Excel 2003, quizás puedan ejecutarlo para ver el ejemplo.
Esperen el siguiente post donde continuaremos con la versión para Excel 2007/2010. Les recomendamos que sigan el blog por alguno de los medios para recibir las actualizaciones.
¡Éxitos!
Keys:

No hay comentarios: