Listado de tablas de una base de datos

Me gustaría saber la forma de poder saber el nombre de todas las tablas de una base de datos de access que no sea la activa.
Lo que intento es importar tablas, mediante código, de otra base de datos y necesitaría saber el nombre de toda las tablas de dicha base de datos para poder dar a elegir al usuario la tabla que quiere importar.

1 respuesta

Respuesta
1
Create una tabla con un sólo campo, la guardas y le llamas NomTbl
El código que te envío abre la DB Externa, está de manera que capta el Path de la db según tu indiques.
También has de poner un .rs para tu tabla, a medida que envuentre una tabla grabe el nombre en la tabla NomTbl. Es decir que tienes que añadir nada más el .rs de tu db o donde lo vayas a poner.
'----------------------------
Dim dbs As DAO.Database
Dim tbl As DAO.TableDef
Dim ret As Variant
Dim strRutaCompletaBD As String
Dim strPasswordBD As String
Dim bExiste As Boolean
strRutaCompletaBD = Nz(Me.txtRutaBD)
strPasswordBD = Nz(Me.txtPasswordDB)
bExiste = False
If Len(strRutaCompletaBD) = 0 Then
MsgBox "Falta poner Nombre BD (Ruta Vacia)", vbExclamation, "Faltan datos"
Exit Sub
End If
DoCmd.Hourglass True
Set dbs = DBEngine.OpenDatabase(strRutaCompletaBD, True, False, ";PWD=" & strPasswordBD)
For Each tbl In dbs.TableDefs
Rem Para que No salgan las tablas del sistema
If Left(tbl.Name, 4) <> "MSys" Then
' MsgBox "Nombre Tabla= " & tbl.Name, vbInformation, "Tabla"
ret = MsgBox("Nombre Tabla= " & tbl.Name, vbInformation + vbOKCancel + vbDefaultButton2, "Tabla DB Externa")
bExiste = True
If ret = vbCancel Then
Exit For
' GoTo Close_Local
End If
End If
Next tbl
Close_Local:
'On Error Resume Next
dbs.Close
Set dbs = Nothing
Set tbl = Nothing
If bExiste = False Then
MsgBox "No hay Tablas en la BD seleccionada", vbInformation, "Tabla DB Externa"
Else
MsgBox "Fin del proceso,.....", vbInformation, "Finalizado..."
End If
Exit_Local:
DoCmd.Hourglass False
Exit Sub
Err_Local:
DoCmd.Beep
Select Case Err.Number
Case 3031
MsgBox "ERROR: en el Password de la Base de Datos", vbExclamation, "Password o Clave"
Me.txtPasswordDB = InputBox("Escribe el Password de la Base de Datos !", "Password o Clave ?")
Rem el numero maximo aceptado por Access es de 20 caracteres
If Len(Me.txtPasswordDB) >= 21 Then
MsgBox "Password demasiado largo !!", vbExclamation, "Aviso"
Resume Exit_Local
End If
MsgBox "Ahora vuelve a intentarlo", vbInformation, "Password"
Case Else
MsgBox Err.Description, vbCritical, "Error N°: " & Err.Number
End Select
Resume Exit_Local

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas