Para conectarse a una base de datos Mysql Desde VBA Excel por lo general, casi siempre efectuámos los mismos pasos:
- Debemos crear el espacio de trabajo, donde debemos especificar a Excel el motor que se precisa para hacer la conexión al gestor de bases de datos.
- Tenemos que marcar las referencias específicas para que Excel la carge y la tenga disponible en su biblioteca.
- Preparamos las variables para:
Una vez tratado los datos, es decir ejecutada la petición, cerrarmos la conexión y vaciamos las variables objeto.
- la conexión
- servidor
- usuario
- contraseña
- nombre de la base con la que trabajar
- las tablas y campos en su caso.
Bien en el caso que nos ocupa y, atendiendo al primer punto, debemos cargar la referencia a la librería Microsoft Active X Data Objects 2.8.
Lo más probable es que no tenga descargado los drivers para la conexión con MySQL. Para ello vaya a esta dirección “MySQL ODBC 3.51 Driver”. Le aconsejo que escoga Windows (x86, 32-bit), MSI Installer Connector-ODBC para 32-bit y en caso de 64 Windows (x86, 64-bit), MSI Installer Connector-ODBC.
Una vez descargadodoble clic en el MSI y escoga instalación típica.Una
vez terminada la instalación, puede verificar la misma en Panel de Control>Herramientas Administrativas>Orígenes de datos ODBC. Clic en la pestaña Drivers y búsquelo en la lista:
A continuación le expongo comentado el código para volcar los datos de una base de datos de MySQL a Excel. En el ejemplo la base que se ha empleado se llama “Colegio” y la tabla “Estudiantes”. Se ha utilizado un servidor local, con lo que la dirección del host es
‘Para empezar y como paso previo cargamos la referencia a la librería Microsoft Active X Data Objects 2.x
‘Se presupone instalado el driver MySQL ODBC 3.51
‘Comenzando
Sub MySQLVBAExcel()
'variable para la conexión
Dim conexion As New ADODB.Connection
'idem para el nombre del servidor en este caso estoy empleando una versión en local
Dim miservidor,bd, user,sql As String
'el Recordset
Dim rs As ADODB.Recordset
'Estableciendo la conexión
miservidor = "127.0.0.1"
bd = "Colegio"
user = "root"
Set conexion = New ADODB.Connection 'con esto utilizamos la conexión indicada más arriba
conexion.Open "DRIVER={MySQL ODBC 3.51 Driver}" _
& ";SERVER=" & miservidor _
& ";DATABASE=" & bd _
& ";UID=" & user _
& ";OPTION=16427?"
Set rs = New ADODB.Recordset
sql = "SELECT * FROM Estudiantes"
rs.Open sql, conexion, adOpenStatic
With Worksheets(1).Cells
.ClearContents
.CopyFromRecordset rs
End With
'Cerramos la conexión
On Error Resume Next
rs.Close
Set rs = Nothing
conexion.Close
Set conexion = Nothing
On Error GoTo 0
End Sub
Explicación rs.Open sql, conexion, adOpenStatic. Quisiera comentarla un poco. El objeto Recordset es el interface entre los datos obtenidos de nuestras consultas sobre las tablas y nuestras páginas excel. Representa una tabla organizada en filas (registros) y columnas (campos). La propiedades y métodos de Recordsets pasan por entender el funcionamiento de otros dos objetos claves:
Muy bueno
ResponderEliminar