Adiciona referência do Excel à macro VBA programaticamente

0

Usando o VBA, criei uma macro no MS Project Professional 2016 que abre o Excel para ler e atualizar o arquivo do projeto. Minha macro usa a biblioteca de objetos do Excel como uma referência que eu poderia com êxito codificar para adicioná-lo.

O problema é que quando executo a mesma macro em um sistema com uma versão diferente do Excel (por exemplo, MS Project 2010, Excel 2010) ele falha, dizendo:

Object library not registered

porque tentei registrar o Excel usando um guia, & versão menor que não existia nesse sistema (usei o Excel 2016 no meu código). Meu código é o seguinte:

Call AddLib("Excel", "{00020813-0000-0000-C000-000000000046}", 1, 9)

Function AddLib(libName As String, guid As String, major As Long, minor As Long)

    Dim vbProj As Object: Set vbProj = Application.VBE.ActiveVBProject
    Dim chkRef As Object
    Dim BoolExists1 As Boolean

    ' Check if the library has already been added
    For Each chkRef In vbProj.References
        If chkRef.Name = libName Then
            BoolExists1 = True
            GoTo CleanUp
        End If
    Next

    vbProj.References.AddFromGuid guid, major, minor

CleanUp:

    If BoolExists1 = True Then
       MsgBox libName & " Reference already exists"
    Else
      MsgBox libName & " Reference Added Successfully"
    End If
   Set vbProj = Nothing
End Function

Existe uma solução para obter a biblioteca de objetos do Excel instalada (preferencialmente a mais recente instalada) nesse sistema específico em que a macro é executada e, em seguida, adicioná-la ao código programaticamente?

    
por samve 17.11.2016 / 11:29

0 respostas