23- Referencias o Librerías (Parte 2)
Autor: Javier Gomez (Javier.Mil
(Válido para cualquier versión de Access)
! Como evitar que falten referencias o librerias !
Muchas Referencias o Librerías tienen su propia versión, por ejemplo: DAO x.x Object Libray. Es muy importante que el numero de versión x.x a la que te refieres sea la librería apropiada y que además este presente en el PC donde vaya ha funcionar la aplicación. Si te refieres a la referencia incorrecta, recibirás errores del "Type Mismatch" o “No coinciden los tipos” .
On Error GoTo Err_Local
Rem comprueba que esten las Referencias/Librerias necesarias
If funReferenciaRota = True Then
MsgBox "Las Referencias / Librerias de esta aplicacion estan mal" & vbNewLine & _
"ahora se cerrara la aplicacion y vuelve ha intentarlo", vbExclamation, "Referencias / Librerias"
Cancel = True
Application.DoCmd.Quit
Else
' MsgBox "Las Referencias/Librerias de esta aplicacion estan bien", vbInformation
End If
Exit_Local:
Exit Sub
MsgBox Err.Description, vbCritical, "Error No.: " & Err.Number
Resume Exit_Local
End Sub
'---------------------------------------------------------------------------------------
' Procedure : funReferenciaRota
' DateTime : 27/12/2007 10:32
' Author : Javier Gomez
' email : javier.news@gmail.com
' WEB : https://www.accessdemo.info
' Purpose : Comprueba Referencias / Librerias rotas
'---------------------------------------------------------------------------------------
Const cRef_1 As String = "MiReferencia.mda" '<< Nombre de la referencia & libreria MDA , MDB, MDE , DLL , OCX , OLB, TLB etc ,...
Dim accRef As Access.Reference
Dim strTemp As String
Dim strGUID As String
Dim lngMajor As Long
Dim lngMinor As Long
Dim intLoop As Integer
On Error GoTo Err_Local
For intLoop = Application.References.Count To 1 Step -1
Set accRef = References(intLoop)
If accRef.IsBroken = True Then
Rem referencia rota
funReferenciaRota = True
"Version: " & vbTab & accRef.Major & "." & accRef.Minor & vbNewLine & _
"Ruta: " & vbTab & accRef.FullPath & vbNewLine & _
"GUID: " & vbTab & accRef.Guid, vbCritical, "Error"
Rem preparacion en caso de utilizar fichero (Extraigo el nombre de la referencia)
strTemp = accRef.FullPath
strTemp = Mid(strTemp, InStrRev(strTemp, "\") + 1)
strGUID = accRef.Guid
lngMajor = accRef.Major
lngMinor = accRef.Minor
If MsgBox("¿ Quieres que el programa arregle automaticamente" & vbNewLine & _
"la libreria / referencia que falta ?" & vbNewLine & vbNewLine & _
"(En caso de No aceptar deberas arreglarlo manualmente)", vbYesNo + vbQuestion + vbDefaultButton2, "Referencia / Libreria") = vbYes Then
On Error Resume Next
References.Remove accRef
On Error GoTo 0
Rem (VBA) anado la referencia que falta sabiendo el GUID
References.AddFromGuid strGUID, lngMajor, lngMinor
funReferenciaRota = False
Case "msacc.olb"
Rem (ACCESS) anado la referencia que falta sabiendo el GUID
References.AddFromGuid strGUID, lngMajor, lngMinor
funReferenciaRota = False
Case "dao360.dll"
Rem DAO anado la referencia que falta sabiendo el GUID
References.AddFromGuid strGUID, lngMajor, lngMinor
funReferenciaRota = False
Case cRef_1
Rem anado la refencia que falta desde un fichero
References.AddFromFile (Application.CurrentProject.Path & "\" & cSubRuta & "\" & cRef_1)
funReferenciaRota = False
Else
MsgBox "No se ha encontrado la libreria necesaria", vbExclamation, "Falta Libreria / referencia"
funReferenciaRota = True
End If
Case Else
Rem referencia No prevista
funReferenciaRota = True
MsgBox "Referencia / libreria No prevista", vbExclamation, "Falta Libreria / referencia"
End If
Exit Function
funReferenciaRota = True
MsgBox Err.Description, vbCritical, Err.Number
Resume Exit_Local
Private Sub
XecSaberQueReferenciasUso()
'---------------------------------------------------------------------------------------
' Procedure :
XecSaberQueReferenciasUso
' DateTime :
19/02/2009 12:01
' Author : Javier
Gomez
' email :
javier.news@gmail.com
' WEB :
https://www.accessdemo.info
' Purpose :
Utilidad para saber cuales son la
referencias / librerÃas de uso
'---------------------------------------------------------------------------------------
Dim intX As Integer
Dim strReferencia As String
On Error GoTo Err_Local
For intX = 1 To
Application.References.Count
Debug.Print
Application.References(intX).Name
strReferencia =
Application.References(intX).FullPath
strReferencia = Mid$(strReferencia,
InStrRev(strReferencia, "\") + 1)
Debug.Print strReferencia
Debug.Print
Application.References(intX).FullPath
If Application.References(intX).Guid
= "" Then
Debug.Print "No hay GUID"
Else
Debug.Print
Application.References(intX).Guid
End If
Debug.Print ""
Next intX
MsgBox "Fin, ahora se abrira
la ventana de inmediato",
vbInformation, "Ventana inmediato"
Application.DoCmd.RunCommand
acCmdDebugWindow
Exit_Local:
Exit Sub
Err_Local:
Debug.Print "Falta referencia=
" & Application.References(intX).Name
Resume Next
End Sub
Listado de referencias según la versión de Access
Nombre Referencia | Access | Ver. | File type | Ubicacion por defecto (version Access inglesa) |
VBA
(Visual Basic For Applications) |
2007 | C:\Program Files\Common Files\Microsoft Shared\vba\vba6\vbe6.dll | ||
2003 | ||||
2002 | ||||
2000 | ||||
97 | C:\Program Files\Common Files\Microsoft Shared\vba\vba332.dll | |||
Access
(Microsoft Access .x Object Library) |
2007 | 12.0 | C:\Program Files\Microsoft Office\Office12\msacc.olb | |
2003 | 11.0 | C:\Program Files\Microsoft Office\Office11\msacc.olb | ||
2002 | 10.0 | C:\Program Files\Microsoft Office\Office10\msacc.olb | ||
2000 | 9.0 | C:\Program Files\Microsoft Office\Office\msacc9.olb | ||
97 | 8.0 | C:\Program Files\Microsoft Office\Office\msacc8.olb | ||
DAO
(Microsoft DAO 3.x Object Library or Microsoft Office 12.0 Access database engine) |
2007 | 12.0 | ACCDB | C:\Program Files\Microsoft Office\Office12\acedao.dll |
MDB | C:\program files\common files\microsoft shared\dao\dao360.dll | |||
2003 | 3.6 | |||
2002 | ||||
2000 | ||||
97 | 3.51 | c:\program files\common files\microsoft shared\dao\dao350.dll | ||
ADODB
(Microsoft ActiveX Data Objects 2.x Library) |
all versions | C:\Program Files\Common Files\System\ADO\msado25.tlb |
Para leer mas: Como activar referencias / librerías (parte I)