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.
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