Además de this answer, que es la solución a prueba de balas para resolver este tipo de problema, pero que es bastante complejo de implementar, también puede escribir algún código para ejecutar cuando se inicia su aplicación VBA, verificando las 'referencias 'colección del objeto' aplicación '. Luego puede verificar (1) si los archivos solicitados (dll, ocx, tlb) están disponibles en la computadora y (2) si se puede crear una referencia (application.references.addFromFile ...).
CUIDADO: declaraciones de objetos que podrían ser 'referencia dependiente', tales como:
Dim cat as ADOX.catalog
elevará un error de compilación si la referencia no está activo cuando el módulo correspondiente es 'compilado'. Luego le aconsejo que aísle su 'procedimiento de verificación de referencia' en un módulo de inicio (equivalente a un 'autoexec') que trata solo con VBA y objetos básicos de la aplicación. Verifíquelo con sus archivos de ayuda (Ejemplo: en Access, las referencias predeterminadas que se pueden usar sin referencias externas son VBA, Access y DAO).
EDIT:
en el caso de las referencias externas dependen de otro paquete de software y (1) no puede ser distribuida con un archivo MSI o (2) puede tener múltiples versiones, creo que el 'references.addFromFile' es el único solución que se puede aplicar. Ejemplo:
- Tiene un/Acceso cliente de ejecución aplicación VBA que ha de hacer referencia a la Palabra (archivo Msword.olb).
- Por problemas de licencia, no se puede distribuir libremente este archivo con el paquete de MSI
- el archivo OLB puede ser el 'versión XP o una más reciente
Nuestra solución es tener 2 mesas en el cliente Archivo de acceso. Uno enumera todas las referencias que deben verificarse o agregarse en el momento del inicio (Word será una de ellas), y el otro enumera todas las ubicaciones posibles del archivo (dependiendo de si el usuario tiene la versión 'office11' o una más nueva) uno), con una relación de uno a muchos entre las 2 tablas.
Por lo tanto, la mejor estrategia podría ser una mezcla entre paquetes y gestión de MSI a través de código:
- MSI es ideal para distribuir DLL independientes u otros archivos que son totalmente 'incrustados' en su aplicación, tales como ActiveX controles (como controles de escáner, informes o visualizadores de archivos, etc.)
- código es la mejor solución donde su aplicación tendrá que comunicarse con otras aplicaciones (word, excel, outlook, etc.) que pueden existir en diferentes versiones en las máquinas de su usuario .
Si sus referencias dependen los están relacionados con otro software de lata existen en diferentes versiones (Excel 2003 o Excel 2007 por ejemplo), la solución del instalador no dará los resultados esperados. –