Cómo conectar MySQL con Excel por VBA - Salón de Clases

Cómo conectar MySQL con Excel por VBA

Existen muchas formas de guardar información de una hoja de cálculo de Excel hacia una base de datos. Pero si estamos trabajando en Visual Basic, la mejor forma de hacerlo es a través de un conector ODBC. Traducido al español como Conectividad Abierta entre Base de Datos, ODBC es un estándar creado por el SQL Access Group, un grupo de diversas compañías tecnológicas que se unieron en 1989 buscando la portabilidad e interoperabilidad entre bases de datos.

Prerrequisitos para utilizar ODBC en Windows

Se necesita un componente llamado Microsoft Visual C++ Redistibutable, a partir de la versión 2022 en adelante. Este componente lo podemos obtener desde Microsoft Learn. Una vez ingresemos al sitio, damos clic en el enlace de la opción X64.

Cómo conectar MySQL con Excel por VBA - Salón de Clases

En la ventana de dialogo, presiona el botón Guardar para que coloque el archivo en la carpeta Descargas. Si tu navegador descarga todo en automático, no es necesario hacer esto.

Cómo conectar MySQL con Excel por VBA - Salón de Clases

Abre el explorador de archivos, ve a la carpeta Descargas y con un doble clic, procede a iniciar la instalación del componente.

Cómo conectar MySQL con Excel por VBA - Salón de Clases

En la ventana de instalación del programa, marca la opción I agree to the license terms and conditions, luego presiona el botón Install.

Cómo conectar MySQL con Excel por VBA - Salón de Clases

En la ventana de Control de cuentas de usuario, presiona el botón Si para continuar.

Cómo conectar MySQL con Excel por VBA - Salón de Clases

Pasado unos momentos, la instalación habrá finalizado. Presiona el botón Close para terminar.

Cómo conectar MySQL con Excel por VBA - Salón de Clases

Instalación del controlador ODBC en Windows

Desde la página de descargas de MySQL, descarga el controlador ODBC en su última versión. Para ello, da clic en el botón Download de la opción Windows (x86, 64 bits) MSI Installer.

Cómo conectar MySQL con Excel por VBA - Salón de Clases

En la siguiente ventana da clic en la opción No thanks, just start my download. Se encuentra un poco más abajo de los botones Login y Sign Up.

Cómo conectar MySQL con Excel por VBA - Salón de Clases

En la ventana de dialogo, presiona el botón Guardar. Esto no es necesario si tu navegador hace la descarga automática.

Cómo conectar MySQL con Excel por VBA - Salón de Clases

Abre el explorador de archivos, ve a la carpeta Descargas y con un doble clic, procede a iniciar la instalación del controlador.

Cómo conectar MySQL con Excel por VBA - Salón de Clases

En la ventana del instalador, presiona el botón Next para comenzar la instalación.

Cómo conectar MySQL con Excel por VBA - Salón de Clases

A continuación, selecciona la opción I accept the terms in the license agreement. Después, presiona el botón Next.

Cómo conectar MySQL con Excel por VBA - Salón de Clases

En la siguiente ventana, deja la opción Typical seleccionada y presiona el botón Next.

Cómo conectar MySQL con Excel por VBA - Salón de Clases

Ahora, presiona el botón Install.

Cómo conectar MySQL con Excel por VBA - Salón de Clases

Saldrá una ventana solicitando permisos, presiona el botón Si (No la canceles)

Cómo conectar MySQL con Excel por VBA - Salón de Clases

Deja que la instalación haga su trabajo…

Cómo conectar MySQL con Excel por VBA - Salón de Clases

Cuando acabe la instalación, solo presiona el botón Finish.

Cómo conectar MySQL con Excel por VBA - Salón de Clases

una vez terminada la instalación, abre el menú Inicio de Windows y escribe la palabra ODBC. Selecciona la opción Orígenes de datos ODBC (64 bits) y luego da clic en Abrir.

Cómo conectar MySQL con Excel por VBA - Salón de Clases

En la ventana de dialogo, selecciona la pestaña Controladores y toma nota del nombre completo del controlador ODBC que acabamos de instalar. Necesitamos el ANSI Driver únicamente. Después de eso, presiona el botón Aceptar.

Cómo conectar MySQL con Excel por VBA - Salón de Clases

Activando el modo programador de Excel

Abre una ventana de Excel, en la parte superior se encuentra el botón Personalizar la barra de herramientas de acceso rápido.

Cómo conectar MySQL con Excel por VBA - Salón de Clases

Da clic en ese botón y selecciona la opción Más comandos.

Cómo conectar MySQL con Excel por VBA - Salón de Clases

En la ventana de dialogo Opciones de Excel, da clic en Personalizar la cinta de opciones, luego marca la casilla Programador y presiona el botón Aceptar.

Cómo conectar MySQL con Excel por VBA - Salón de Clases

En la pestaña Programador que ahora aparece, da clic en el botón Visual Basic o presiona Alt + F11

Cómo conectar MySQL con Excel por VBA - Salón de Clases

El entorno de desarrollo de Visual Basic se debe ver así:

Cómo conectar MySQL con Excel por VBA - Salón de Clases

Añadiendo las elementos necesarios para la conexión

Antes de comenzar a programar, se necesita la referencia al objeto ADODB que será el que puede manejar ODBC. Para ello, ve al menú Herramientas (Tools) y selecciona Referencias (References)

Cómo conectar MySQL con Excel por VBA - Salón de Clases

En la ventana de dialogo, busca y selecciona la opción Microsoft ActiveX Data Objects 2.8 Library, después presiona el botón Aceptar (OK)

Cómo conectar MySQL con Excel por VBA - Salón de Clases

Los módulos en Visual Basic son archivos de texto que contienen código reutilizable, así que vamos a crear la conexión a nuestra base de datos en un módulo. Para crear un módulo ve a la sección Proyecto (Project), luego presiona el botón derecho del ratón sobre VBA Project. Selecciona la opción Insertar (Insert) y luego la sub-opción Módulo (Module)

Cómo conectar MySQL con Excel por VBA - Salón de Clases

El módulo debe lucir así

Cómo conectar MySQL con Excel por VBA - Salón de Clases

Creando la conexión a MySQL en Excel

Se necesita una variable de ámbito Global de tipo ADODB.Connection

Global conexion As ADODB.Connection

Crea un procedimiento para realizar la conexión. Los procedimientos son similares a las funciones. En Visual Basic, se definen con la palabra clave Sub.

Sub conectar()
End Sub

Dentro de ese procedimiento, crea una variable de tipo String para formar lo que se conoce como cadena de conexión.

Dim cadena As String

Forma la cadena de conexión concatenando algunos elementos. El primero es el nombre del driver ODBC que instalaste hace rato. Al momento de escribir este artículo es MySQL ODBC 9.5 ANSI Driver, pero recuerda revisar su nombre completo siempre. Por favor, nota el punto y coma (;) antes de finalizar la cadena.

cadena = "DRIVER={MySQL ODBC 9.5 ANSI Driver};"

El segundo elemento incluye el nombre del servidor y la base de datos que vas a utilizar. Si estas trabajando en modo local, recuerda que el nombre debe ser localhost, de otra manera necesitas la dirección IP o el nombre del servidor remoto.

cadena = cadena + "SERVER=localhost;DATABASE=ejemplovba;"

El tercer elemento es el nombre de usuario y la contraseña. Por motivos educativos usa root, pero recuerda que es recomendable que una base de datos tenga sus usuarios propios. Por cierto, si estas usando XAMPP o algún otro software similar, el usuario root puede no tener contraseña o usar el mismo nombre como contraseña.

cadena = cadena + "USER=root;PASSWORD=root;"

Ahora, necesitas crear una instancia de la variable ADODB.Connection.

Set conexion = New ADODB.Connection

Abre la conexión a la base de datos con el método Open

conexion.Open cadena

Si la conexión regresa un estado (State) de 1, entonces se ha logrado la conexión. En caso contrario, no se ha logrado nada.

If conexion.State <> 1 Then
   MsgBox "No se puede conectar a la BD", vbCritical
Else
   MsgBox "Conexion establecida"
End If

Todo el código escrito queda como sigue:

Global conexion As ADODB.Connection
Sub conectar()
    Dim cadena As String
    cadena = "DRIVER={MySQL ODBC 9.5 ANSI Driver};"
    cadena = cadena + "SERVER=localhost;DATABASE=ejemplovba;"
    cadena = cadena + "USER=root;PASSWORD=root;"
    Set conexion = New ADODB.Connection
    conexion.Open cadena
    If conexion.State <> 1 Then
        MsgBox "No se puede conectar a la BD", vbCritical
    Else
        MsgBox "Conexión establecida"
    End If
End Sub

Así va quedando nuestro módulo:

Cómo conectar MySQL con Excel por VBA - Salón de Clases

Creando la base de datos

Es momento de crear la base de datos que se necesita. En mi caso, tengo un servidor montado con XAMPP que me permite a través de phpMyAdmin gestionar todas mis bases de datos locales. Si tienes una configuración diferente a la mía, tal vez quieras saltar este paso y hacerlo como te funcione.

Lo primero es abrir XAMPP como administrador. En el menú de Inicio de Windows, escribe XAMPP, luego selecciona XAMPP Control Panel y por último Ejecutar como administrador.

Cómo conectar MySQL con Excel por VBA - Salón de Clases

En la ventana de Control de cuentas de usuario, presiona el botón Si, para permitir la ejecución del programa.

Cómo conectar MySQL con Excel por VBA - Salón de Clases

Una vez abierto XAMPP, presiona el botón de Start de Apache y luego el de MySQL.

Cómo conectar MySQL con Excel por VBA - Salón de Clases

Espera hasta que los nombres de dichos programas, aparezcan en verde.

Cómo conectar MySQL con Excel por VBA - Salón de Clases

Si tenemos una instalación típica, bastará con escribir http://localhost/phpmyadmin en la barra de dirección de tu navegador favorito.

Cómo conectar MySQL con Excel por VBA - Salón de Clases

A continuación, presiona el botón Nueva que se encuentra en la barra lateral izquierda.

Cómo conectar MySQL con Excel por VBA - Salón de Clases

En la siguiente ventana, escribe el nombre de la base de datos, luego selecciona utf8_spanish_ci como cotejamiento y presiona el botón Crear.

Cómo conectar MySQL con Excel por VBA - Salón de Clases

Con eso la base de datos ha sido creada. No importa que por el momento se encuentre vacía.

Cómo conectar MySQL con Excel por VBA - Salón de Clases

Probando la conexión ODBC

Regresa a Excel, ve a la pestaña Programador. En ella encontrarás un botón llamado Insertar. Dale clic y selecciona el primer botó de toda la lista llamado Botón (control de formulario)

Cómo conectar MySQL con Excel por VBA - Salón de Clases

Dibuja el botón dentro de la hoja de cálculo de la misma forma en como se dibuja un círculo o un cuadrado en el programa.

Cómo conectar MySQL con Excel por VBA - Salón de Clases

Al terminar de dibujar, saldrá la ventana de dialogo Asignar macro. En esa ventana, selecciona el procedimiento conectar que hiciste en el entorno de Visual Basic y presiona Aceptar.

Cómo conectar MySQL con Excel por VBA - Salón de Clases

Una vez hecho esto, Dale clic a la etiqueta del botón y cambia el texto por algo más apropiado. Para terminar de editar el botón, solo da clic afuera del mismo.

Cómo conectar MySQL con Excel por VBA - Salón de Clases

Para terminar, da clic en el botón que acabas de crear.

Cómo conectar MySQL con Excel por VBA - Salón de Clases

Si todo sale bien, debes obtener el mensaje de confirmación que programaste en el procedimiento. Con esto ya sabes como conectar una hoja de Excel a MySQL.

Cómo conectar MySQL con Excel por VBA - Salón de Clases

Comentarios, dudas y preguntas

¡Y eso es todo! No olvides dejar tus comentarios, dudas y / o preguntas. Con gusto las respondemos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)

Comentarios

Aún no hay comentarios. ¿Por qué no comienzas el debate?

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *