Hoy vamos a aprender a vincular y borrar tablas automáticamente en Access usando VBA.
Sobretodo, lo utilizaremos cuando vayamos a crear una copia de seguridad automática de nuestra BBDD a final de año. Así, podremos archivar las tablas antiguas y crear las nuevas.
Además, a modo de ejemplo, traigo un programa muy sencillito pero que ilustrará a la perfección la metodología a seguir. Consta de dos archivos, uno de datos (con dos tablas) y otro con el programa (un único formulario).
Dicho formulario dispone de dos botones: uno para vincular las tablas del archivo de datos y otro para borrarlas.
A continuación, os dejo el código a implementar en cada uno de los botones,
Private Sub Importar_tablas_Click()
Dim dbsActual As DAO.DataBase
Dim tdfProductos As DAO.TableDef
Dim strBDRemota As String
Dim strBDLocal As String
Dim rstRemoto As DAO.Recordset
'Ubicacion de la base de datos remota (donde se encuentra la tabla)
strBDRemota = "C:\Prueba\Vincular_tablas_vba_Datos.accdb"
'Ubicacion de la base de datos Local (la que recibirá la tabla vinculada)
strBDLocal = "C:\Prueba\Vincular_tablas_vba_Programa.accdb"
'Abrimos la base de datos a la que se le va a agregar la tabla vinculada
Set dbsActual = OpenDatabase(strBDLocal)
'Creamos la tabla vinculada "Movimientos" y su conexión
Set tdfMovimientos = dbsActual.CreateTableDef("Movimientos")
tdfMovimientos.Connect = ";DATABASE=" & strBDRemota & ";"
tdfMovimientos.SourceTableName = "Movimientos"
dbsActual.TableDefs.Append tdfMovimientos
'Creamos la tabla vinculada "Servicios" y su conexión
Set tdfServicios = dbsActual.CreateTableDef("Servicios")
tdfServicios.Connect = ";DATABASE=" & strBDRemota & ";"
tdfServicios.SourceTableName = "Servicios"
dbsActual.TableDefs.Append tdfServicios
End Sub
Private Sub Borrar_tablas_Click()
Dim dbs As DAO.DataBase
Set dbs = CurrentDb()
'Borramos las tablas
dbs.Execute "DROP TABLE Movimientos"
dbs.Execute "DROP TABLE Servicios"
End Sub
En primer lugar, el código define las bases de datos origen y destino para la vinculación de tablas para, posteriormente, crearlas y vincularlas.
Para el código de borrado, simplemente definimos la base de datos actual y borramos las tablas una a una.
Si tienes cualquier duda con el código, no dudes en preguntarme a través de los comentarios.
A continuación, vamos a ver cómo funciona usando el ejemplo.
Lo primero que tienes que hacer es copiar los dos archivos (datos y programa) en la siguiente ruta C:\Prueba.
Una vez lo hayas hecho, pulsa el botón Importar tablas. Después, pincha en cualquier sitio sobre el panel de navegación y presiona F5 para actualizar. Verás que aparecen vinculadas las dos tablas del archivo datos.
Si ahora pulsamos el botón Borrar tablas y actualizamos el panel de navegación, desaparecerán.
Espero que te haya sido de utilidad este post y que hayas aprendido a vincular y borrar tablas automáticamente en Access usando VBA.
Por último, quiero invitarte a compartir tus dudas en los comentarios o en el foro. Intentaré ayudarte en todo lo que pueda, y así aprenderemos todos.
Un saludo y hasta la próxima.
Si te ha servido y quieres donar
Descarga el archivo del ejemplo
10 Comentarios
Enviar un comentario
Últimas publicaciones
Hola, gracias por el código, ¿cómo se actualiza con vb en lugar de pulsar F5?
Hola Lidia,
Prueba con Me.Refresh
Saludos.
Hola, gracias por responder. Con Me.Refresh no la muestra. La cuestión es que aunque no aparezca visible la tabla que acabo de vincular, se supone que todo funcionará bien no?
También lo he intentado así, pongo el nombre de tu ejemplo, pero nada:
tdfServicios.Refresh
perdón, sería tdfServicios.RefreshLink
Lo encontré 🙂
Es RefreshDatabaseWindow
Hola Lidia!
Ese comando se emplea para actualizar después de haber creado o borrado un objeto. Pensaba que se trataba de refrescar datos. Me alegra que lo hayas conseguido resolver.
Saludos.
Buenas tardes, por favor quisiera su colaboración y orientación y si tiene un ejemplo.
Tengo 5 tablas vinculadas a una base de datos, las bases están en un ruta N: en mi equipo local. Pero si yo abro la vista base de datos en otro equipo, esa N: la tienen configurada como O: ó como P:, Entonces quisiera saber si hay alguna manera de cambiar la ruta de la unidad por un cuadro de dialogo cosa que el usuario se le indique donde debe buscar las tablas para que se vinculen nuevamente, porque siempre he tenido que ingresar a la base de datos como administrador e ir a las tablas y desde el menú Conceptual revincular de manera manual las tablas de la base de datos una a una.
Quedo atento a sus amables comentarios y si es posible colaboración. Gracias de antemano
Hola Fernando,
Sería cuestión de habilitar un campo en el que introducir la unidad donde se encuentran las tablas vinculadas y hacer uso del mismo en el código cuando llames a la ruta de vinculación de tablas tal y como tengo en este post.
Si tienes cualquier problema, no dudes en crear un hilo en el foro y subir tu archivo para poder ayudarte.
Saludos.
Excelente articulo sobre borrar y vincular tablas por medio de VBA
Gracias César. Por aquí andamos para cualquier cosa. Un saludo.