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?