Está en la página 1de 6

GUIA DE EJERCICIOS PARA CONEXIÓN DE

EXCEL CON BASES DE DATOS ACCESS

Los ejercicios presentados a continuación permiten recrear escenarios de acceso a datos almacenados
en Access a través de pequeñas aplicaciones elaboradas en lenguaje Visual Basic 6.0 para Officce,
utilizando procedimientos de conexión a bases de datos ADO.NET (Active Data Objects)

La interface de usuario es elaborada en la Excel mediante formularios encadenados con macros.

Como ejercicio orientador de estos procedimientos se desarrollarán dos escenarios que permitirán al
estudiante conocer las diferentes instrucciones utilizadas para:

- Establecer la conexión entre la aplicación (software de interface) y la base de datos en Access


- Capturar información entregada por el usuario y almacenarla en una base de datos mediante
instrucciones SQL de inserción de registros en una tabla previamente creada en Access.
- Buscar datos en una tabla de Access y recuperar información desde dicha tabla para mostrarla
en la aplicación de interface con el usuario

Como apoyo para el desarrollo de estos ejercicios utilizaremos los tutoriales de autoría de
EXCELeINFO, publicados en su sitio Web para efectos educativos.

Insertar registros en tabla de Access desde


Excel usando VBA y ADO
Guía:

http://www.exceleinfo.com/insertar-registros-en-tabla-de-access-desde-excel-usando-vba-y-ado/

https://blogs.itpro.es/exceleinfo/2018/11/26/insertar-registros-en-tabla-de-access-desde-excel-
usando-vba-y-ado/

videotutorial:

https://www.youtube.com/watch?v=A5OwRfVnFEs
Buscar registros en tabla de Access desde
Excel usando SQL Query, VBA y ADO
Guía:

https://blogs.itpro.es/exceleinfo/2018/12/02/buscar-registros-en-tabla-de-access-desde-excel-
usando-sql-query-vba-y-ado/

videotutorial:

https://www.youtube.com/watch?time_continue=1&v=Gzqk_cHpIRo

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 OLEDB, que para nuestro tutorial usaremos un
proveedor para conectarnos a una Base de datos de Access.

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 Microsft 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 o lo que devuelve una consulta o Query . 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


Le hemos realizados algunas modificaciones a la Tabla de Access, añadiéndole una
columna de Fecha, para posteriormente, en otro tutorial, aprender a realizar reportes
en Excel desde data de Access.

Figura 2. Base de datos y Tabla de Access.


Formulario de búsqueda
Tenemos un UserForm donde buscaremos la información almacenada en nuestra
Base de datos de Access. La búsqueda se hará mediante una consulta SQL usando el
comodín LIKE que nos buscará valores donde un texto se encuentre dentro de
valores completos. En nuestro ejemplo buscaremos todas las filas donde los valores
de la columna nombre contengan la letra “s”.
SELECT * FROM MiTabla WHERE nombre LIKE ‘%s%’

Figura 3. Formulario UserForm para buscar data en Tabla de Access usando Query
SQL.
Código VBA de la macro
El siguiente código será llamado desde el botón Buscar que se
llama CommandButton1

Nota: Es importante que la base de datos de Access se encuentre en la misma ruta de este

'EXCELeINFO
'MVP Sergio Alejandro Campos
'http://www.exceleinfo.com
'https://www.youtube.com/user/sergioacamposh
'http://blogs.itpro.es/exceleinfo

Private Sub CommandButton1_Click()


Dim Conn As ADODB.Connection
Dim MiConexion
Dim Rs As ADODB.Recordset
Dim MiBase As String
Dim Query As String
Dim i, j

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

Query = "SELECT * FROM MiTabla WHERE nombre LIKE '%" & Me.TextBox1.Value & "%'"

Set Rs = New ADODB.Recordset


Rs.CursorLocation = adUseServer
Rs.Open Source:=Query, _
ActiveConnection:=Conn

'Valir si la consulta devuelve resultados


If Rs.EOF And Rs.BOF Then
'Borrar la conexión al Recordset
Rs.Close
Conn.Close
'Borrar la memoria
Set Rs = Nothing
Set Conn = Nothing

MsgBox "No hay resultados para la consulta", vbInformation, "EXCELeINFO"


Me.ListBox1.Clear
Exit Sub
End I

archivo para que funcione esta macro. La base de datos tiene como nombre MiBase.accdb.
Me.ListBox1.Clear
Exit Sub
End If

'Asignar número de columnas


With Me.ListBox1
.ColumnCount = Rs.Fields.Count
End With

'Recorrer el Recordset
Rs.MoveFirst
i = 1

With Me.ListBox1
.Clear

'Asignar los encabezados


.AddItem

For j = 0 To 4
.List(0, j) = Rs.Fields(j).Name
Next j

Do
.AddItem
.List(i, 0) = Rs![ID]
.List(i, 1) = Rs![Fecha]
.List(i, 2) = Rs![Nombre]
.List(i, 3) = Rs![Ventas]
.List(i, 4) = Rs![Comentarios]
i = i + 1
Rs.MoveNext

Loop Until Rs.EOF


End With

'Cerrar la conexión
Rs.Close
Conn.Close
Set Rs = Nothing
Set Conn = Nothing

End Sub

También podría gustarte