martes, 20 de marzo de 2018

VBA: Verificar Referencias en un Proyecto VB

Cuántas veces hemos visto/sufrido que al compartir ficheros con macros con compañeros con la suite de Office de diferentes versiones y/o necesidades, libros de trabajo que ayer funcionaban perfectamente, hoy depuran errores simples donde antes no lo hacían... o sencillamente salta un error tipo: No se puede encontrar proyecto o librería.
Es el gran problemas de los fallos con las Referencias de los proyectos VB.

Normalmente, cuando la experiencia te lo indica, accedemos manualmente al proyecto de VB > menú Herramientas > Referencias y buscamos librerías con errores (FALTA-MISSING o cualquier otro mensaje extraño).
Manualmente desmarcamos esa librería y aceptamos.. para posteriormente marcar la que entendamos debía estar seleccionada...
Recuerda que habitualmente son temas de versión.


Hoy veremos una alternativa mediante programación para verificar que todo está correcto.
MUY importante que la librería:
Microsoft Visual Basic for Applications Extensibility 5.3 library
esté habilitada.


Igualmente importante, para este caso y siempre en general, es que esté habilitada la opción de Excel:
Confiar en el acceso al modelo de objetos de proyectos VB
que se encuentra en el centro de confianza.

VBA: Verificar Referencias en un Proyecto VB


Puedes activarlo rápidamente desde la ficha Programador > grupo Código > botón Seguridad Macros

En un módulo estándar del libro incluimos el siguiente procedimiento:

Sub CheckReferencias()
Dim vbProj As VBProject
Dim Refs As Reference
'TRabajamos sobre el Proyecto de VB de nestro libro de trabajo
Set vbProj = ThisWorkbook.VBProject
'recorremos las referencias/librerías existentes
For Each Refs In vbProj.References
   'Verificamos que no haya referencias en FALTA (o rotas)
   If Refs.IsBroken = False Then
      'llevamos la info a la ventana de inmediato
      Debug.Print Refs.Name & vbTab & Refs.Description
      'quita referencia si está rota
      'vbProj.References.Remove Refs
      'carga nueva referencia
      'vbProj.References.AddFromFile "E:\Excelforo\TestFiles\RefMe.dot"
   End If
Next
Debug.Print "Fin recorrido"
End Sub



El resultado en mi caso dispuesto en la ventana de inmediato:

VBA: Verificar Referencias en un Proyecto VB

No hay comentarios:

Publicar un comentario