• 👏 Bienvenido a nuestra comunidad Excel

    ¿Todavía no estás registrado? 😲

    Registrate gratis aquí y podrás:

    💪 Hacer preguntas a los expertos
    ⬇️ Descargar ejemplos y plantillas
    🏅 
    Acceder a contenidos premium

MACRO para enviar por email hoja activa como PDF

everde

New member
buenas tardes

Les comento:

Para enviar los pagos a proveedores, utilizo un código, que abre con outlook, pero requieren ahora que se envié por medio de thunderbird, que es el que se utiliza en la empresa.

En la parte del código donde se abre el programa Outlook estaba así:
Set olApp = CreateObject("outlook.Application")

Y funciona a la perfección, el problema es, ahora que cambie para que se envié por Thunderbird utilizándolo de esta manera:
Set olApp = CreateObject("C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe")
Cuando ejecuto el botón de envió, sale el siguiente mensaje: El componente Activex no puede crear el objeto y pues ahí me atore, espero alguien pueda ayudarme a resolver esto, lo agradecería infinitamente.

el siguiente código es que utilizo:

Sub EnvioEmail_HojaActiva_comoPDF()
Dim olApp As Object
Dim olMail As Object
Dim RutaTemporal As String, NombreFicheroTemporal As String, RutaCompleta As String

'deshabilitamos el refresco de pantalla
'y muy importante los eventos!
With Application
.ScreenUpdating = False
.EnableEvents = False
End With

'Definimos una variable que será la Ruta donde guardaremos,
'antes de enviar como adjunto, el pdf que generaremos...
RutaTemporal = Environ$("temp") & "\"

'Generamos el nombre del fichero temporal .Pdf
NombreFicheroTemporal = ActiveSheet.Name & ".pdf"

'Combinando las dos variables anteriores, tendremos la Ruta Completa de nuestro .pdf
RutaCompleta = RutaTemporal & NombreFicheroTemporal

'Depuramos posibles errores a la hora de Exportar
' a la ruta anterior, la hoja activa como PDF
On Error GoTo err
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=RutaCompleta, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False

'LLega el momento de abrir la aplicación Outlook
Set olApp = CreateObject("C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe")

'y generar un nuevo email a enviar...
Set olMail = olApp.CreateItem(0)

Dim destinatario As String, Asunto As String, Msg As String
'FALTA ASIGNAR VALORES A ESTAS VARIABLES!!!

Msg = "Estimado proveedor" & vbNewLine & vbNewLine
Msg = Msg & "Por medio de la presente, damos a conocer el desglose de las facturas que se están pagando, así mismo indicando las notas de crédito pendiente por descuentos o faltante de material." & vbNewLine & vbNewLine & vbNewLine
Msg = Msg & "Nota: Favor de enviar complementos de pago" & "." & vbNewLine
Msg = Msg & "Los proveedores que no generen complementos en tiempo y forma estarán siendo boletinados los días 15 del mes siguiente en la página del SAT, en el apartado de denuncias." & vbNewLine & vbNewLine
Msg = Msg & "Este correo es exclusivo para él envió de pagos." & vbNewLine & vbNewLine
Msg = Msg & "Para recepción de facturas y notas de crédito, será al correo: [email protected]." & vbNewLine
Msg = Msg & "Para alguna aclaración referente al pago, será al correo: [email protected]" & vbNewLine & vbNewLine
Msg = Msg & "Atentamente:" & vbNewLine & vbNewLine
Msg = Msg & "Departamento de Egresos"

On Error Resume Next
With olMail
.To = Range("B1") 'añadimos el destinatario, el Para...
.CC = Range("C1") 'para adjuntar destinatario en Con Copia a...
.BCC = Range("D1") 'para adjuntar destinatario en Con Copia Oculta a...
.Subject = "PAGO DE FACTURAS NORMA RAMIREZ (EL DELFIN)" 'indicaríamos el Asunto
.Body = Msg 'indicaríamos el Cuerpo del email
'adjuntamos el fichero pdf desde la ruta donde la guardamos
.Attachments.Add RutaCompleta
.Display 'o bien usaremos .Send para enviar directamente...
'.Send
End With
On Error GoTo 0

'Ya que el email ha sido enviado (o mostrado) con el pdf adjuntado
'podemos borrar el pdf que habíamos guardado (en la carpeta temporal)...
Kill RutaCompleta

'limpiamos las variables creadas.
Set olMail = Nothing
Set olApp = Nothing

'Reestablecemos las condiciones prevías
'refresco de pantalla y activamos loe eventos
With Application
.ScreenUpdating = True
.EnableEvents = True
End With

Exit Sub

'para el control de errores en caso de exportación como Pdf...
err:
MsgBox err.Description

End Sub
 

Adjuntos

eavjperu

Active member
Como bien te comenta Hector Miguel, Thunderbird no tiene un objeto ActiveX (o similar) para su uso a través de VBA ¿qué queremos decir con eso? Que no es suficiente asumirlo y copiar/pegar/cambiar con código que es para un objeto Outlook de Microsoft.

Si no necesariamente entiende el uso de la consola de los comandos del sistema, mira la macro de este enlace que soluciona tu dilema:

https://stackoverflow.com/questions...ly-send-email-from-thunderbird-with-excel-vba

Para los adjuntos dale una mirada al enlace enviado por HM y mira el argumento "Attachment" y lo agregas a la macro sugerida en este enlace.

Abraham Valencia
https://abrahamexcel.blogspot.com/
Lima, Perú
 
Arriba