Convierte un Formulario de Excel en una Base de Datos en la Nube (supabase)

Excel es tan versátil que además de tratar datos y hacer cálculos, lo puedes utilizar como formulario para capturar datos y guardarlos en otra ubicación: una base de datos, otro archivo, una tabla. Aquí te muestro cómo hacer para que captures datos en un formulario en Excel y esos datos se guarden directamente en una base de datos en la nube. Y como va a estar en la nube, no hay problema con que el mismo archivo se utilice en varias máquinas, todo de manera segura y gratuita.

Cómo Guardar Datos de Excel en una Base de Datos en la Nube

Convierte un Formulario de Excel en una Base de Datos en la Nube (supabase)

🎁 Descarga el archivo de ejemplo

Escribe tu correo electrónico para recibir gratis el archivo para practicar.


El formulario en Excel

Formulario captura que da de alta valores en supabase (exceleinfo)
Imagen 1. Formulario captura que da de alta valores en supabase (exceleinfo)

Yo tengo un formulario de captura en Excel con fecha, vendedor, producto, nombre, precio, cantidad y total. Quiero que estos datos se den de alta en una base de datos llamada Supabase, la cual tenemos que dar de alta y configurar en supabase.com.

El beneficio de esto es que tu mismo archivo se va a conectar a esa base de datos, lo que significa que el archivo lo puedes compartir por correo o en una red local y siempre los datos se van a ir a la misma base de datos. Y como es una base de datos formal, no hay riesgo de que haya interferencia entre registros. Cualquier persona que tenga tu archivo puede dar de alta registros en esa base de datos.

Supabase es relevante porque no requieres programar un backend, simplemente te conectas mediante una API. Con esa conexión puedes dar de alta registros, actualizar, modificar e incluso dar de baja.

Para adecuar el formulario en Excel:

  • Fecha: =HOY() para que devuelva la fecha de hoy.
  • Vendedor y Producto: listas desplegables con validación de datos (Datos → Validación de datos → Permitir lista), tomando el origen de una tabla de Vendedores y otra de Productos.
  • Nombre y Precio: se traen automáticamente con BUSCARX, buscando el producto en la tabla de Productos y devolviendo el nombre o el precio correspondiente.
  • Cantidad: se captura manualmente.
  • Total: precio por cantidad.

Configurar la base de datos en Supabase

  1. Entra a supabase.com y crea una cuenta, ya sea desde cero con tu correo o usando tu cuenta de GitHub.
  2. Crea una nueva organización. El plan gratuito te permite bases de datos de hasta 500 MB y hasta dos proyectos. Si necesitas algo más robusto, existe el plan Pro.
  3. Crea el proyecto: nómbralo, ponle una contraseña a la base de datos y elige la región más cercana (Américas, si estás en México). Deja habilitados los Data API (la forma en que te conectas desde Excel o cualquier aplicación) y el RLS, que es la seguridad a nivel de fila.

Crear la tabla

En Table Editor, crea una tabla llamada registros, dejando habilitado el RLS. Además de las columnas automáticas id y created_at, agrega:

  • fecha (tipo Date — esta es la fecha que tú controlas desde Excel, distinta de created_at que la pone automáticamente la base de datos)
  • vendedor (texto)
  • producto (texto)
  • nombre (texto)
  • precio (numérico)
  • cantidad (numérico)
  • total (numérico)

Dar permisos

Con la tabla creada, todavía nadie puede insertar nada. En el SQL Editor corre:

sql

GRANT INSERT ON public.registros TO anon;

anon es el rol de identidad anónima — con esto le das permiso a ese rol para dar de alta registros en la tabla.

Después, en Authentication → Policies, crea dos políticas:

  • Alta-registros: comando INSERT, rol anon, WITH CHECK en true. Con esto ya puedes guardar registros.
  • Leer-registros: comando SELECT, rol anon, USING en true. Esta la necesitas si más adelante quieres consultar los datos, por ejemplo con Power Query.

Obtener la URL y la llave

En Project Settings → Data API está la URL del proyecto. En Project Settings → API Keys está la llave pública (empieza con sb_). Ambas las vas a necesitar en la macro.

La macro en VBA

En la ficha Programador (si no la tienes: Archivo → Opciones → Personalizar cinta de opciones → activa Programador) abre Visual Basic y crea la macro. Esto es lo que hace: toma los valores de fecha, vendedor, producto, nombre, precio, cantidad y total, arma con ellos una cadena de tipo JSON, y la manda por HTTP a la API de Supabase usando la URL y la llave pública. Si todo sale bien, te devuelve un mensaje de registro guardado; si algo falla, te devuelve el error.

vba

Sub EnviarRegistroASupabase()

    Dim http As Object
    Dim url As String
    Dim apiKey As String
    Dim jsonBody As String
    Dim fecha As String
    Dim vendedor As String
    Dim producto As String
    Dim nombre As String
    Dim precio As Double
    Dim cantidad As String
    Dim total As Double

    ' --- 1. Leer datos de la hoja ---
    fecha = Format(Range("C4").Value, "yyyy-mm-dd")
    vendedor = Range("C5").Value
    producto = Range("C6").Value
    nombre = Range("C7").Value
    precio = Range("C8").Value
    cantidad = Range("C9").Value
    total = Range("C10").Value

    ' --- 2. Configuración de Supabase ---
    url = "URL"
    apiKey = "API_KEY"   ' sb_publishable_... o anon key

    ' --- 3. Construir el JSON ---
    jsonBody = "{""fecha"":""" & fecha & """,""vendedor"":""" & vendedor & """,""producto"":""" & producto & """,""nombre"":""" & nombre & """,""precio"":" & precio & ",""cantidad"":" & cantidad & ",""total"":" & total & "}"

    ' --- 4. Configurar y enviar la petición HTTP ---
    Set http = CreateObject("MSXML2.XMLHTTP.6.0")

    http.Open "POST", url, False
    http.setRequestHeader "apikey", apiKey
    http.setRequestHeader "Authorization", "Bearer " & apiKey
    http.setRequestHeader "Content-Type", "application/json"
    http.setRequestHeader "Prefer", "return=representation"

    http.send jsonBody

    ' --- 5. Manejo de respuesta ---
    If http.Status = 201 Then
        MsgBox "Registro guardado correctamente en Supabase.", vbInformation
    Else
        MsgBox "Error " & http.Status & ": " & http.responseText, vbCritical
    End If

    Set http = Nothing

End Sub

Reemplaza URL con la URL de tu proyecto seguida de /registros (la tabla), y API_KEY con tu llave pública.

Después, en Insertar → Iconos, agrega un ícono a la hoja (por ejemplo uno de base de datos), dale clic derecho → Asignar macro → elige EnviarRegistroASupabase. Con eso ya tienes un botón que da de alta el registro con un clic.

Un error común al probar esto: si te aparece “únicamente llaves secretas pueden utilizarse para este endpoint”, revisa que a la URL le hayas agregado el nombre de la tabla al final (por ejemplo .../rest/v1/registros) — sin eso, Supabase no sabe a qué tabla te estás conectando y lo interpreta como un endpoint que requiere otro tipo de llave.

Leer los datos con Power Query

Ya que los datos están en Supabase, puedes traerlos de vuelta a Excel con Power Query. En la ficha Datos → Obtener datos → Consulta en blanco, y en el Editor avanzado pega:

let
    Origen = Web.Contents(
        "URL",
        [
            Headers = [
                #"apikey" = "API",
                #"Authorization" = "Bearer API"
            ]
        ]
    ),
    JSON = Json.Document(Origen),
    Tabla = Table.FromRecords(JSON)
in
    Tabla

Aquí la URL debe ser la de la tabla completa (la misma que usaste en la macro), y en ambos lugares donde dice API va tu llave pública. Al conectar, Power Query te va a pedir editar credenciales — dale conectar y vas a ver los datos en formato JSON convertidos a tabla. Cierra y carga a una hoja nueva, y ahí quedan tus registros. Cada vez que quieras traer los datos más recientes, solo actualizas la consulta.

Lo que sigue

Con esto ya tienes lo básico: un formulario en Excel que captura datos, una macro que los manda a una base de datos en la nube, y Power Query para consultarlos de vuelta. El siguiente paso natural es construir un sistema completo tipo CRUD, donde además de dar de alta y consultar puedas actualizar y eliminar registros directamente desde Excel — pero esa es harina de otro costal.

Si quieres profundizar en automatización con VBA, Power Query y este tipo de integraciones que le dan a Excel el poder de una herramienta empresarial real, en Deztaca tenemos los cursos que te llevan paso a paso por todo esto, con ejercicios prácticos y acompañamiento real.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top