Cómo llamar a una API desde una macro en Excel

 Si alguna vez te has preguntado cómo interactuar con servicios externos desde Excel, este tutorial te lo explica paso a paso. En esta entrada veremos como utilizar VBA (Visual Basic for Applications) en una Macro de Excel. Usaremos como ejemplo la API de Banxico, que permite consultar el tipo de cambio.

¿Qué necesitas?

  • Excel habilitado para macros. Asegúrate de que tu archivo tenga la extensión .xlsm.
  • Un token válido para la API de Banxico. Si no tienes uno, puedes registrarte en su sitio oficial. Para explicarte como obtenerla te dejo el link Como obtener token de Banxico
  • El complemento VBA JSON para analizar respuestas JSON en VBA (te explico cómo instalarlo más adelante).

Paso a paso para llamar a la API

  1. Abre el editor de VBA en Excel (Alt + F11) y crea un nuevo módulo.
  2. Copia y pega el siguiente código:
Sub LlamarAPI()
    Dim http As Object
    Dim JSON As Object
    Dim URL As String
    Dim token As String
    Dim respuesta As String
    
    ' Define la URL y el token
    token = "TU_TOKEN"
    URL = "https://www.banxico.org.mx/SieAPIRest/service/v1/series/SF43718/datos/oportuno?token=" & token

    ' Crea el objeto XMLHTTP para realizar la solicitud
    Set http = CreateObject("MSXML2.XMLHTTP")
    http.Open "GET", URL, False
    http.Send

    ' Verifica si la solicitud fue exitosa
    If http.Status = 200 Then
        respuesta = http.responseText
        
        ' Analiza el JSON devuelto
        Set JSON = JsonConverter.ParseJson(respuesta)
        
        ' Extrae información del JSON y la coloca en la hoja de cálculo
        Dim datos As Object
        Dim serie As Object
        Dim item As Object
        Dim i As Long
        
        Set datos = JSON("bmx")("series")
        For Each serie In datos
            i = 1
            For Each item In serie("datos")
                Cells(i, 1).Value = item("fecha")
                Cells(i, 2).Value = item("dato")
                i = i + 1
            Next item
        Next serie
    Else
        MsgBox "Error al realizar la solicitud. Código de estado: " & http.Status
    End If
End Sub



  1. Descarga e importa el analizador JSON: Descarga el archivo JsonConverter.bas desde el repositorio VBA-JSON y agrégalo a tu proyecto (Archivo > Importar archivo en el editor VBA).
  2. Ejecuta la macro: Ve a Desarrollador > Macros, selecciona LlamarAPI y presiona Ejecutar.

Pasos adicionales:

  1. Referencias para analizar JSON: Este código utiliza el analizador de JSON de VBA llamado VBA JSON. Descárgalo desde GitHub y agrégalo a tu proyecto.

    • En el editor VBA, selecciona Archivo > Importar archivo y elige el archivo JsonConverter.bas descargado.
  2. Ejecuta la macro:

    • Cierra el editor VBA (Alt + Q).
    • En Excel, ve a Desarrollador > Macros, selecciona LlamarAPI y haz clic en Ejecutar.

Los datos obtenidos de la API se escribirán en la hoja que tengamos abierta. En este ejemplo, se mostrarán las fechas en la columna A y los valores en la columna B.



¿Te ha funcionado?

Si tienes dudas o necesitas ayuda, ¡deja tu comentario y estaré encantado de ayudarte! 😊

Comentarios

Entradas más populares de este blog

Ejemplo Macro en Word

Macro de Excel para abrir archivo csv

API de banxico para obtener tipo de cambio utilizando Javascript