La mejor solución es limitar las referencias en su MDB acceso a los componentes internos de acceso. Esta sería la referencia de acceso, la referencia VBA y la referencia DAO. Todas las demás bibliotecas externas deben usarse a través del enlace tardío. Si está utilizando el objeto de sistema de archivos, por ejemplo, en lugar de esto (con una referencia al modelo de objetos de Windows Script Host):
Dim objFSO As New FileSystemObject
If objFSO.FolderExists("\\d9m09521\WB\") Then
...
End If
que eliminaría la referencia y convertirlo a esto:
Dim objFSO As Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FolderExists("\\d9m09521\WB\") Then
...
End If
Si le preocupa el impacto en el rendimiento de inicializar el FSO cada vez que lo usa, puede guardar una referencia en caché. Yo suelo usar una variable estática dentro de una función para devolver un objeto como éste:
Public Function FSO() As Object
Static objFSO As Object
If objFSO Is Nothing Then
Set objFSO = CreateObject("Scripting.FileSystemObject")
End If
FSO = objFSO
End Function
Ahora, es posible que desee obtener de fantasía y también ser capaz de derribar la instancia de objeto, en cuyo caso se haría algo de esta manera:
Public Function FSO(Optional bolCloseObject As Boolean = False) As Object
Static objFSO As Object
If bolCloseObject Then
Set objFSO = Nothing
Exit Function
End If
If objFSO Is Nothing Then
Set objFSO = CreateObject("Scripting.FileSystemObject")
End If
FSO = objFSO
End Function
En cualquier caso, el objetivo es que el enlace en tiempo resuelve la ubicación de las bibliotecas fuera en tiempo de ejecución y por lo tanto no se rompa, excepto si fuera la biblioteca no está instalado o no está correctamente registrado. Con la vinculación tardía, puede atrapar ambas condiciones, pero con la vinculación anticipada, toda la aplicación de Access simplemente se rompe.
Recibo un error al implementar esta lógica. como follwos: "Referencia de objeto no establecida en una instancia de un objeto" Por favor sugiera cómo hacerlo ..... Gracias ... – Suman
¿Qué línea está dando este error? – Fionnuala
En "Dim ref As References" obteniendo el error anterior y en el segundo tipo de declaración, es decir, Dim ref como nuevo Error de referencias "Recuperando la fábrica de la clase COM para el componente con CLSID {EB106214-9C89-11CF-A2B3-00A0C90542FF } Falló debido al siguiente error: 80040154." – Suman