Para programadores que desejam desenvolver integrações VBA entre as aplicações do MS Office, devem necessariamente adicionar uma referência na aplicação para que a mesma funcione, é possível fazer através do próprio VBA.
As referências podem ser vistas no VBE pelo menu Ferramentas >> Referências:
A janela abaixo é mostrada:
Acima observamos como adicionar ou remover referências para que outras classes possam ser executadas no VBA.
Bem, agora que sabemos fazer isso de modo manual, vamos fazê-lo programaticamente.
O primeiro passo para adicionar uma referência é seu GUID. O GUID significa Globally Universal Identifier, e corresponde à uma sequência de 32 caracteres hexadecimais. Cada referência no VBA possui um GUID único.
Para listarmos todos os GUID, podemos usar a rotina abaixo:
Sub AllReferenceList() Dim i As Long
Debug.Print "Referência", "GUID", , , "Caminho" For i = 1 To ThisWorkbook.VBProject.References.Count With ThisWorkbook.VBProject.References(i) Debug.Print .Name, .GUID, .FullPath End With Next i End Sub
Pode ser que obtenha o erro abaixo ao tentar executar essa rotina:
Isso acontece porque a rotina necessita ler informações do editor VBE. Por padrão, o Excel não permite que rotinas de VBA faça essa leitura. Para destravar isso, vá em Arquivo | Opções:
Uma janela aparecerá. Clique em Central de Confiabilidade e em seguida em Configurações da Central de Confiabilidade:
Uma nova janela aparecerá. Clique em Configurações de Macro, marque a Caixa de Seleção Confiar no acesso ao modelo de objeto do projeto do VBA e em seguinda clique em OK:
Execute a macro novamente. O resultado final será algo como:
Sabendo-se o GUID da referência que se deseja adicionar, use a rotina:
Sub AdicionarReferência() Dim strGUID As String 'Mude a GUID abaixo para a referência que precisar 'Neste exemplo, a referência é ao Word 2010 Let strGUID = "{00020905-0000-0000-C000-000000000046}" 'Suprimir erros para tratá-los posteriormente On Error Resume Next 'Adicionar referência ThisWorkbook.VBProject.References.AddFromGuid GUID:=strGUID, Major:=1, Minor:=0 'Em caso de erro: Select Case Err.Number Case Is = 32813 'A referência já estava habilitada MsgBox "A referência habilitada." _ , vbInformation _ , "Informação" Case Is = vbNullString 'A referência foi adicionada com sucesso MsgBox "Referência adicionada." _ , vbInformation _ , "Informação" Case Else 'Um erro desconhecido foi encontrado MsgBox "Erro encontrado " & vbNewLine _ & "durante tentativa de adicionar referência." _ , vbCritical _ , "Erro!" End Select On Error GoTo 0 End Sub