Cuando trabajamos con VBA en Microsoft Access y deseamos comprobar la existencia de una tabla, son tres las formas de tratar el problema que vienen de inmediato a nuestra mente.
1) Recorrer los elementos de la colección TableDefs, para encontrar el elemento deseado.
Private Function TableExistsEx(ByVal Name As String) As Boolean
Dim i As Integer
Dim logEx As Boolean
Name = LCase(Name)
For i = vbEmpty To (CurrentDb.TableDefs.Count - 1)
If LCase(CurrentDb.TableDefs(i).Name) = Name Then
logEx = True
Exit For
End If
Next
TableExistsEx = logEx
End Function
2) Asignar el elemento de la colección TableDefs a un objeto de tal forma que al no existir nos genere un error.
Private Function TableExists(ByVal Name As String) As Boolean
Dim def As DAO.TableDef
On Local Error Resume Next
Set def = CurrentDb.TableDefs(Name)
TableExists = (Err.Number = vbEmpty)
On Local Error GoTo 0
End Function
3) Consultar la tabla MSysObjects
Private Function TableExists(ByVal Name As String) As Boolean
TableExists = _
Not (Nz(DLookup("[Name]", "MSysObjects", _
"[Name]='" & _
Name & "' And [Type]=6"), _
"No") = "No")
End Function