livio.sfranca 27/6/2018, 15:04
Há uma forma que utilizo para adicionar referências dinamicamente. É quase o que você precisa, mas no meu caso é para distinguir as versões de referência do Excel. Não me lembro direito, mas acho que adaptei esse código do Tomas Vasquez com algumas alterações que achei em sites internacionais.
Segue as funções que uso, caso consiga adaptar:
Adicionar referência:
- Código:
'Para adicionar referências dinamicamente uso esta função
Public Sub AddRefExcel()
Dim Versao As Long
Dim chkRef As Reference
Dim Incluso As Boolean
Incluso = False
For Each chkRef In References
If chkRef.Guid = "{00020813-0000-0000-C000-000000000046}" Then
Incluso = True
Exit Sub
End If
Next
Versao = CLng(Application.Version) / 10
References.AddFromGuid "{00020813-0000-0000-C000-000000000046}", 1, Versao - 8
End Sub
Remover referência:
- Código:
'Para removê-la uso esta
Public Sub RemoveRefExcel()
Dim chkRef As Reference
For Each chkRef In References
If chkRef.Guid = "{00020813-0000-0000-C000-000000000046}" Then
References.Remove chkRef
End If
Next
End Sub
Porém, você precisa do código Guid, versão principal (Major) e versão secundária (Minor) da sua referência Adobe. Para isso, utilizo a a seguinte função:
- Código:
Public Sub ListarRef_Access()
Dim i As Long
Dim strSQL As String
On Error Resume Next
CurrentDb.Execute ("CREATE TABLE tsysRefs (RefName TEXT, RefPath TEXT, RefGUID TEXT, RefMajor LONG, RefMinor LONG)")
CurrentDb.Execute ("DELETE * FROM tsysRefs")
For i = 1 To Application.VBE.ActiveVBProject.References.Count
strSQL = "INSERT INTO tsysRefs (RefName, RefPath, RefGUID, RefMajor, RefMinor ) " _
& "VALUES('" & Application.VBE.ActiveVBProject.References(i).Name & "','" _
& Application.VBE.ActiveVBProject.References(i).FullPath & "','" _
& Application.VBE.ActiveVBProject.References(i).Guid & "','" _
& Application.VBE.ActiveVBProject.References(i).Major & "','" _
& Application.VBE.ActiveVBProject.References(i).Minor & "')"
CurrentDb.Execute strSQL
Next i
End Sub
Esta função vai listar todas as referências inclusas em seu projeto em uma tabela que também será criada, caso não exista.
O que você pode fazer para saber cada versão do adobe, é rodar a fução ListarRef_Access em cada maquina que contem uma versão diferente do programa.
Quanto à adição da versão correta, você pode colocar a instrução "References.AddFromGuid "{00020813-0000-0000-C000-000000000046}", 1, Versao - 8" em loop pulando os erros.
Aí você poderia substituir essa instrução por esta:
For i = 0 To 20
For j = 0 To 20
References.AddFromGuid "{00020813-0000-0000-C000-000000000046}", i, j
Next
Next
Coloquei o máximo de versões até 20, mas não sei até quanto que vai a numeração dessas versões.
Não sei sei deu para entender direito. Mas acho que dá certo...