Al igual que hicimos con Word en una publicación anterior esta vez lo haremos con Access utilizando como referencia “microsoft activex data objects 6.0 library” en mi caso, aunque vosotros podréis tener una versión inferior si utilizáis Excel 2007.
Cada biblioteca utiliza memoria y reduce el rendimiento, no utilicemos bibliotecas que sabemos que no son necesarias para nuestra aplicación.
Después de especificar la biblioteca, estamos listos para iniciar el código que nos comunicara con la base de datos.
Para que nos sea más sencillo reconocer cada una de los objetos y propiedades que utilizamos analizaremos paso a paso (análisis forense) cada línea de código.
Abrimos el procedimiento.
Sub ExportarDB()
Declaramos los objetos ADO (ActiveX Data Objects ) que utilizaremos.
Dim Datos As New ADODB.Recordset
El objeto Recordset de ADO se utiliza para mantener un conjunto de registros de una tabla de base de datos.
En ADO, este objeto es el más importante y el más usado para manipular los datos de una base de datos.
Dim Conexion As New ADODB.Connection
El objeto connection de ADO se utiliza para crear una conexión abierta a un origen de datos, a través de esta conexión, se puede acceder y manipular una base de datos.
Dim CaminoConexion As String
Dim InstruccionSQL As String
Desactivamos la actualización de la pantalla...
Application.ScreenUpdating = False
Seleccionamos la hoja donde copiaremos los datos.
Hoja1.Select
Seleccionamos todos los datos de la tabla “Datos” con una instrucción SQL.
InstruccionSQL = "SELECT Datos.* FROM Datos"
CaminoConexion = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & ThisWorkbook.Path & "\DBDatos.accdb"
La propiedad Provider (proveedor) establece o devuelve el nombre del proveedor.
La propiedad Source especifica una expresión de cadena que representa al objeto, que en este caso es la dirección de la DB donde tomara los datos.
Conexion.Open ConnectionString:=CaminoConexion
ConnectionString establece o devuelve los datos utilizados para crear una conexión con una fuente de datos.
Establecida la conexión abrimos la tabla donde tenemos los datos.
Datos.Open Source:=InstruccionSQL, ActiveConnection:=Conexion
If Datos.EOF = True Then
La función EOF devuelve False hasta que se haya llegado al final del archivo.
MsgBox "No se encontraron datos"
Else
Range("A3").CopyFromRecordset Data:=Datos
CopyFromRecordset copia el contenido de un objeto Recordset ADO o DAO en una hoja de cálculo…
Hoja1.Range("A:E").Columns.AutoFit
Esta línea autoajusta las columnas a los datos exportados de la DB
End If
Liberamos la memoria de datos.....
Conexion.Close Set Conexion = Nothing
Set Datos = Nothing
End Sub
Y ya tendríamos los datos listos en Excel para utilizarlos.
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.