Contenido
En la era de la información interconectada, acceder y utilizar datos de diversas fuentes se ha vuelto esencial. Una forma común de lograrlo es a través de API REST (Interfaz de Programación de Aplicaciones Representacionales del Estado Transferido). Estas API permiten que las aplicaciones se comuniquen y compartan datos de manera eficiente. ¿Sabías que también puedes consumir API REST directamente en Excel utilizando VBA (Visual Basic for Applications)? Aquí te explicamos cómo hacerlo en unos simples pasos..
Conocer la API REST
Antes de empezar, necesitas conocer la API que deseas consumir. Esto implica comprender la estructura de la URL, los parámetros requeridos, los métodos HTTP permitidos y el formato de los datos que la API devuelve (generalmente JSON o XML).
Solicitud GET
Sub ConsumirAPIREST()
Dim URL As String
Dim JSONString As String
Dim HTTPReq As New MSXML2.xmlhttp60
URL = "URL_de_la_API_aqui"
HTTPReq.Open "GET", URL, False
HTTPReq.setRequestHeader "Content-Type", "application/json"
HTTPReq.send ""
JSONString = HTTPReq.responseText
' Ahora puedes procesar el JSONString según tus necesidades
' Por ejemplo, puedes utilizar la biblioteca VBA-JSON para analizar el JSON
' Aquí hay un ejemplo utilizando VBA-JSON (debes haber importado la biblioteca)
Dim JsonParser As Object
Set JsonParser = JsonConverter.ParseJson(JSONString)
' Ahora puedes acceder a los datos y realizar operaciones con ellos
Debug.Print JsonParser("campo1")
Debug.Print JsonParser("campo2")
Set HTTPReq = Nothing
End Sub
Solicitud POST
Sub ConsumirAPIREST_POST()
Dim httpRequest As New MSXML2.xmlhttp60
Dim url As String
url = "https://api.example.com/post-endpoint" ' Cambia la URL por la URL real del endpoint POST
Dim requestData As String
requestData = "{""key"": ""value""}" ' Cambia esto por los datos que deseas enviar en formato JSON
' Realiza una solicitud POST a la API
httpRequest.Open "POST", url, False
httpRequest.setRequestHeader "Content-Type", "application/json"
httpRequest.send requestData
' Obtiene la respuesta de la API
Dim response As String
response = httpRequest.responseText
' Puedes hacer algo con la respuesta, como imprimir en la hoja de Excel
ThisWorkbook.Sheets("Hoja1").Range("A1").Value = response
End Sub
API Rest con autorización Consumer Key y Consumer Secret
Sub ConsumirAPIREST_Authentication()
Dim httpRequest As New MSXML2.xmlhttp60
Dim url As String
url = "https://api.example.com/data" ' Cambia la URL por la URL real de la API
Dim username As String
username = "tu_usuario" ' Cambia esto por tu nombre de usuario
Dim password As String
password = "tu_clave_secreta" ' Cambia esto por tu clave secreta
urlCompleta = url & "?consumer_key=" & consumer_key & "&consumer_secret=" & Consumer_secret
' Realiza una solicitud POST a la API con autenticación
httpRequest.Open "POST", urlCompleta , False
httpRequest.setRequestHeader "Content-Type", "application/json"
httpRequest.send
' Obtiene la respuesta de la API
Dim response As String
response = httpRequest.responseText
' Puedes hacer algo con la respuesta, como imprimir en la hoja de Excel
ThisWorkbook.Sheets("Hoja1").Range("A1").Value = response
End Sub
Descargue la biblioteca VBA – JSON desde el Git del autor :
https://github.com/VBA-tools/VBA-JSON/releases/tag/v2.3.1
Recuerda que este es solo un ejemplo básico y que el código debe ajustarse según la estructura de la API que estás consumiendo y tus necesidades específicas.