lunes, 11 de julio de 2022

Excel y Access (I): Realizando nuestra primera conexión a un archivo Access

En muchas ocasiones, y durante años, he leído/visto preguntas relacionadas a cómo usar datos almacenados en Access, pero a través de Excel, así que hoy comenzaremos a ver cómo se hace eso paso a paso.

Lo primero es comentar que usaremos ADO para lo mencionado. Por si aún no saben lo que es ADO, son las iniciales de ActiveX Data Objects, que es un mecanismo para comunicarse con bases de datos y así poder trabajar con sus datos. Una de las ventajas es su compatibilidad con VBA y, además, permite conexiones con Access. También vamos a usar los Recordset, que son estructuras de datos cuya utilidad es la de almacenar información desde una tabla. Por último, para el manejo de datos usaremos SQL (por sus siglas en inglés Structured Query Language), que es un lenguaje de consulta estructurada que sirve para administrar y recuperar información de sistemas de gestión de bases de datos relacionales. Ojo, hay otras formas de hacer conexiones o utilizar otras propiedades y/o formas de manipular registros, pero yo prefiero las recomendadas y que usaré ahora. Ah, si bien ya he colocado ejemplos de todo esto en el blog e incluso he publicado un par de artículos sobre conexiones de Excel con MySQL, lo que haré a partir de hoy con Access será mucho más secuencial, estructurado y detallado a través de más de un artículo; de ese modo incluso podrían aplicarlo a otros tipos de bases de datos.

Ahora sí, regresando a Excel y Access, en esta ocasión, por ser la primera, básicamente vamos a establecer la conexión a una base de datos de Access, para eso lo que haremos ahora es activar la referencia a “Microsoft ActiveX Data Object 6.1 Library”, en donde el 6.1 puede variar dependiendo de tu versión de Office y/o la librería que desees usar.

Lo primero que haremos será declarar la variable (de objeto) que usaremos para la conexión:

Dim cnn As ADODB.Connection

Luego daremos valor a esa variable asignándole una conexión:

Set cnn = New ADODB.Connection

Del objeto conexión de ADO, lo que nos interesa son dos propiedades y un método: ConnectionString, Provider y Open, respectivamente (para ver otras puede entrar aquí: Enlace).

Cuando hablamos de Provider o proveedor, hacemos referencia a un conjunto de bibliotecas que se utiliza para comunicarse con una fuente de datos. En este caso vamos a usar un archivo Access del tipo *.accdb llamado "Ejemplo", por lo que necesitaremos tener el instalado “Microsoft.ACE.OLEDB.12.0”. Si de casualidad no lo tienen, pueden descargarlo de aquí: Enlace. A la propiedad Provider vamos a darle justamente dicho valor.

Para la propiedad ConnectionString podemos fácilmente recurrir a esta web para adaptar a nuestra necesidad: Enlace.

En el caso de método Open, basta llamarlo para establecer la conexión con el origen de datos.

Entonces, dicho eso, y en el supuesto que vamos a trabajar con el archivo Excel en la misma carpeta que nuestro archivo Access, esta parte quedaría así:

With cnn
    .Provider = "Microsoft.ACE.OLEDB.12.0"
    .ConnectionString = "data source=" & ThisWorkbook.Path & "\Ejemplo.accdb"
    .Open
End With

La cantidad de líneas incluso podrían ser menos, pero eso ya queda como tarea para ustedes ya que ko importante hoy es aprender y que se entienda todo.

Podríamos tener todo junto de este modo:

Option Explicit 
'Todo Sobre Excel 
'Abraham Valencia 
'https://abrahamexcel.blogspot.com/ 
'https://www.facebook.com/TodosobreExcelAV/ 
'https://twitter.com/Todosobre_Excel 
'https://www.youtube.com/channel/UCxEe3aA5uGrtYDdboBT_ptg 
'Lima, Perú 
'Julio del 2022 

Sub MiPrimeraConexion()

Dim cnn As ADODB.Connection

Set cnn = New ADODB.Connection

With cnn
    .Provider = "Microsoft.ACE.OLEDB.12.0"
    .ConnectionString = "data source=" & ThisWorkbook.Path & "\Ejemplo.accdb"
    .Open
End With

MsgBox "Conexión realizada con exito", vbOKOnly, "Todo Sobre Excel"

cnn.Close 'Esto cierra la conexión pero no es obligatorio ponerlo para este caso

Set cnn = Nothing 'Esto descarga la variable, pero en realidad el End Sub también lo hace
 
End Sub

Entonces amigos y amigas, hoy hemos aprendido a conectar, sé que probablemente estén con ansiedad de seguir, pero vamos paso a paso, aspí que eso es todo por hoy. Hasta la próxima!

Abraham Valencia
Lima, Perú

4 comentarios:

  1. Excelente Abraham Valencia Jiménez Probando y con éxito!!!

    ResponderBorrar
  2. Fernando González Valle9 de mayo de 2023, 4:13 p.m.

    Con esta entrada y el vídeo de tu canal https://www.youtube.com/watch?v=_G1ASuGgLVA ya no tiene secretos. Gracias, Abraham

    ResponderBorrar