es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Error de enlace tardío a Outlook en Excel 2013 VBA al guardar el archivo con Excel 2019: Falta Microsoft Outlook 16.0 Object Library

La mayoría de las máquinas en mis instalaciones utilizan Office 2013. Sin embargo, 1 máquina utiliza Office 2019.

Cuando guardo un archivo de Excel en Excel 2019 y luego lo abro en Excel 2013, obtengo el error

Biblioteca de objetos de Microsoft Outlook 16.0 que falta

Después de investigar un poco, entendí que puedo evitar esto utilizando late binding en mi código VBA. Creo que ya estoy utilizando late binding.

Sub SendMailForwarderquote()
  Dim rng As Range
  Dim OutApp As Object
  Dim OutMail As Object

With Application
  .EnableEvents = False
  .ScreenUpdating = False
End With

Set rng = Nothing
On Error Resume Next
'Only the visible cells in the selection
Set rng = Sheets("Quote from forwarder").Range("A4:G46")
On Error GoTo 0

If rng Is Nothing Then
  MsgBox "La selección no es un rango o la hoja está protegida" & _
  vbNewLine & "por favor, corrija y vuelva a intentarlo.", vbOKOnly
  Exit Sub
End If

Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon
Set OutMail = OutApp.CreateItem(0)

On Error Resume Next
With OutMail
  .To = Sheets("Quote from forwarder").Range("D11").Value
  .CC = ""
  .BCC = ""
  .Subject = Sheets("Quote from forwarder").Range("B12").Value
  .HTMLBody = RangetoHTML(rng)
  '.Send
  .Display
End With
On Error GoTo 0

With Application
  .EnableEvents = True
  .ScreenUpdating = True
End With

Set OutMail = Nothing
Set OutApp = Nothing

'MsgBox "Mail sent", vbOKOnly, "Mail"

End Sub
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Basado en el código proporcionado, parece que el código VBA ya está utilizando la vinculación tardía, que es el enfoque recomendado para evitar problemas relacionados con diferentes versiones de Office. Sin embargo, el problema con la falta de la biblioteca de objetos de Outlook 16.0 puede estar relacionado con la referencia a esta biblioteca en el código.

    Puede intentar eliminar la referencia a la biblioteca de objetos de Outlook 16.0 y reemplazarla con código de vinculación tardía para crear el objeto de Outlook. Esto se puede hacer eliminando la siguiente línea:

    Set OutApp = CreateObject("Outlook.Application")
    

    Y reemplazándola con:

    Dim OutApp As Object
    Set OutApp = CreateObject("Outlook.Application")
    

    Esto creará el objeto de Outlook utilizando la vinculación tardía, lo que debería resolver cualquier problema relacionado con diferentes versiones de Office.

Comments are closed.