Autor Tema: Control de referencias  (Leído 2329 veces)

Desconectado xavi

  • Administrador
  • Habitual
  • *****
  • Mensajes: 200
Control de referencias
« en: Noviembre 20, 2012, 01:52:46 pm »
Palabras clave: referencias
Autor: Búho / Agosto 2002
Extraído de: La web del Búho

Objetivo:
Objetivo

Cita de: quien
Cuando ejecuto mi MDB en mi ordenador, todo funciona bien. Sin embargo si la traslado a otro PC, el usuario me indica que se producen errores, pues faltan Referencias a DLL u OCX dentro del  proyecto. ¿Como puedo controlar este tema desde código?

Código: [Seleccionar]
'Francisco J. García Aguado (Bhuo)
'Agosto de 2002



Function MiraReferenciasVBA()
    Dim Ref As Reference


   'Sacado de la ayuda de Access para ver si se ha
   'roto alguna referencia del proyecto de VBA.
   'Bhúo, Agosto de 2002

   'Puede servir para cuando distribuyamos una aplicación
   'con referencias externas a funciones inmersas en: OCX,DLL, MDE, MDB...)
   'que nosotros en el proyecto hemos referenciado desde una determinada ubicación
   'local de nuestro PC y a la hora de ejecutar el programa el usuario, pueda dar errores
   'por no tener dichas referencias o tenerlas en otra ubicación distinta
   'y de esta forma el usuario nos pueda avisar de esta contingencia.
   'Esta función se puede poner en el formulario de inicio de la aplicación
   'para avisar al usuario de este tema.

    For Each Ref In References
       
        If Ref.IsBroken = False Then
         ' este msgbox es puramente informativo de las referencias que están OK
         ' y es para probar este código.
         MsgBox "Nombre de la Referencia: " & Ref.Name & vbCrLf _
          & "En la ruta: " & Ref.FullPath & vbCrLf _
          & "Versión de la Referencia: " & Ref.Major & "." & Ref.Minor, vbInformation + vbOKOnly, "Referencias en VBA"
        Else
         ' referencia rota
          MsgBox "Nombre de la Referencia rota:" & Ref.Name & vbCrLf _
           & "Ruta Origina: " & Ref.FullPath & vbCrLf _
           & "GUID completo de la Referencia: " & Ref.Guid, vbCritical + vbOKOnly, "AVISO: Servicio de mantenimiento del programa 95-22222222."
         'aquí la acción a seguir...
         
         'Sacado también de la ayuda de Access.
         'En este ejemplo, se podría poner ruta completa, mediante
         'un dialogo de Windows e intentar referenciar de nuevo
         'la referencia rota o bien abandonar la aplicación.
         'En este caso ponemos una ruta fija que sirva de ejemplo:
         'C:\Windows\System\Mscal.ocx
         'Recordar que el nombre y Path original de la referencia
         'sería ref.FullPath
         If CrearNuevaReferencia("C:\Windows\System\Mscal.ocx") = False Then
          MsgBox "No se ha podido regenerar la referencia.", vbCritical + vbOKOnly, "Aviso"
         Else
          MsgBox "La Referencia, " & Ref.FullPath & " se ha establecido correctamente.", vbExclamation + vbOKOnly, "Correcto"
         End If
        End If
    Next Ref
End Function

'***************************************
Function CrearNuevaReferencia(PathCompletoFichero As String) As Boolean
    Dim Ref As Reference

    On Error GoTo Error_CrearNuevaReferencia
    Set Ref = References.AddFromFile(PathCompletoFichero)
    CrearNuevaReferencia = True

Exit_CrearNuevaReferencia:
    Exit Function

Error_CrearNuevaReferencia:
    MsgBox "Aviso Nº: " & Err & "..." & Err.Description & " [" & PathCompletoFichero & "]", vbCritical + vbOKOnly, "Aviso de Error"
    CrearNuevaReferencia = False
    Resume Exit_CrearNuevaReferencia
End Function


« Última modificación: Diciembre 13, 2012, 12:05:11 am por xavi »