Te cuento como lo hago yo.... supongo que habrá otras formas
dim CAMPO as string ' para la llamada a la función VTACCESS()
Private Sub Form_Open(Cancel As Integer)
On Error GoTo ErrorOpen
Me.RecordSource = "GAD GPFIC01" 'una de mis tablas que si no la encuentra te sale un cuadro de dialogo para que la busques donde proceda y mientra no cambies de sitio la aplicación, no te saldrá el cuadro de dialogo.
ErrorOpen:
If Err = 3024 Or Err = 3043 Or Err = 3044 Then
CAMPO = VTACCESS()
End If
Resume Next
End Sub
En un módulo tengo estas dos funciones
Function VTACCESS() As Boolean
Dim ActualDB As Database
Dim ETabla As TableDef
Dim ModuloServidorFile As String
Dim Contador As Integer
ModuloServidorFile = OpenFileAccesos()
If ModuloServidorFile <> "" Then
VTACCESS = True
Set ActualDB = CurrentDb()
For Contador = 0 To ActualDB.TableDefs.Count - 1
Set ETabla = ActualDB.TableDefs(Contador)
If ETabla.Connect <> "" And Right(ETabla.Connect, 12) = "GESPERBD.MDE" Then
ETabla.Connect = ";DATABASE=" & ModuloServidorFile
Err = 0
ETabla.RefreshLink
If Err <> 0 Then
MsgBox "La conexión con el Módulo Servidor ha sido insatisfactoria." & Chr(13) & Chr(10) & Chr(13) & Chr(10) & "'" & ModuloServidorFile & "' no contiene la tabla '" & ETabla.SourceTableName & "' requerida por la aplicación.", vbCritical + vbOKOnly, "Conexión con el Servidor"
VTACCESS = False
Exit For
End If
End If
Next Contador
Else
MsgBox "La conexión con el Módulo Servidor ha sido cancelada.", vbCritical + vbOKOnly, "Conexión con el Servidor"
VTACCESS = False
End If
End Function
Private Function OpenFileAccesos() As String
Dim of As OPENFILENAME
of.hwndOwner = Application.hWndAccessApp
of.hInstance = 0
of.lpstrCustomFilter = 0
of.nMaxCustrFilter = 0
of.lpfnHook = 0
of.lpTemplateName = 0
of.lCustrData = 0
of.lpstrFilter = "GESPERBD" & vbNullChar & "*.mde" & vbNullChar & vbNullChar
of.nFilterIndex = 1
of.lpstrFile = Left$("GESPERBD.MDE" & String$(512, 0), 512) ' La tuya
of.nMaxFile = 511
of.lpstrFileTitle = String$(512, 0)
of.nMaxFileTitle = 511
of.lpstrTitle = "Vincular B.D."
of.lpstrInitialDir = "F:\PROGRAM\ACCESS 2002\" ' Cambialo a tu gusto
of.lpstrDefExt = ""
of.flags = OFN_EXPLORER + OFN_FILEMUSTEXIST + OFN_NOCHANGEDIR + OFN_PATHMUSTEXIST + OFN_HIDEREADONLY
of.lStructSize = Len(of)
If GetOpenFileName(of) Then
OpenFileAccesos = Trim(Left$(of.lpstrFile, InStr(of.lpstrFile, vbNullChar) - 1))
Else
OpenFileAccesos = ""
End If
End Function