Insertar registros en tabla de Access desde Excel usando VBA y ADO
En este tutorial voy a mostrarte una macro que nos ayudará a dar de alta registros directamente en una tabla de Access usando VBA mediante ADO (ActiveX Data Objects).
Microsoft ActiveX Data Objects (ADO)
ADO es uno de los mecanismos que habilita a las aplicaciones cliente para conectarse a distintos orígenes de datos y acceder y manipular la información o los datos. La conexión de las aplicaciones hacia los orígenes de de datos se hace mediante proveedores OLE DB, que para nuestro tutorial usaremos un proveedor para conectarnos a una Base de datos de Access.
Ver video Pasar datos de Excel a Access usando VBA y macros
Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.
Qué es un Recordset
Es importante conocer el concepto de Recordset, ya que siempre que nos comunicamos con una Base de datos, sea Oracle, SQL, MySQL o Access, este concento siempre estará presente.
Un Recordset es una estructura de datos que se usa para almacenar información en una Tabla de una Base de datos. El término Recordset se una en infinidad de lenguajes de programación y prácticamente sirve para dar de alta registros, así como eliminar y actualizar los mismos.
Activar Referencia en el IDE de Visual Basic para aplicaciones
Antes de escribir cualquier código para conectarnos a una base de datos mediante ADO es importante activar la referencia a la librería de ADO.
- Abrimos el IDE de VBA usando Alt + F11.
- Abrimos el menú Herramientas > Referencias.
- Marcamos Microsoft ActiveX Data Objects 6.1 Library.
Figura 1. Activamos la referencia a Microsoft ActiveX Data Objects 6.1 Library (ADO).
Base de datos de Access
Para este tutorial nuestro archivo de Excel se encuentra en la misma ruta que la base de datos de Access. Nuestra base de datos se llamará MiBase.accdb y la tabla se llamará MiTabla.
Figura 2. Base de datos de Access.
El formulario de captura
Tenemos un UserForm sencillo donde solo contamos con 3 TextBox para capturar datos. Los datos de los 3 cuadros de texto deseamos que se guarden en la tabla de la Figura 2
Figura 3. UserForm para capturar los datos que serán registrados en Access.
Código VBA de la macro
El siguiente código lo pondremos en un Módulo normal y será llamado desde un CommandButton del formulario.
Nota: Es importante que la base de datos de Access se encuentre en la misma ruta de este archivo para que funcione esta macro.
'EXCELeINFO 'MVP Sergio Alejandro Campos 'http://www.exceleinfo.com 'https://www.youtube.com/user/sergioacamposh 'http://blogs.itpro.es/exceleinfo Sub AltaRegistrosAccess() Dim Conn As ADODB.Connection Dim MiConexion Dim Rs As ADODB.Recordset Dim MiBase As String MiBase = "MiBase.accdb" Set Conn = New ADODB.Connection MiConexion = Application.ThisWorkbook.Path & Application.PathSeparator & MiBase With Conn .Provider = "Microsoft.ACE.OLEDB.12.0" .Open MiConexion End With Set Rs = New ADODB.Recordset Rs.CursorLocation = adUseServer Rs.Open Source:="MiTabla", _ ActiveConnection:=Conn, _ CursorType:=adOpenDynamic, _ LockType:=adLockOptimistic, _ Options:=adCmdTable 'Cargar los datos a Tabla de Access With Rs .AddNew .Fields("Campo1") = UserForm1.TextBox1.Value .Fields("Campo2") = UserForm1.TextBox2.Value .Fields("Campo3") = UserForm1.TextBox3.Value End With Rs.Update 'Cerrar la conexión Rs.Close Conn.Close Set Rs = Nothing Set Conn = Nothing MsgBox "Alta exitosa", vbInformation, "EXCELeINFO" End Sub
Descarga los archivos de ejemplo
Alta de registros en Tabla de Access desde Excel con VBA.zip
Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.