Visual Basic for Applications:
Enviando una solicitud HTTP

Cómo hacerlo:

La clave para enviar una solicitud HTTP en VBA es utilizar la biblioteca Microsoft XML, v6.0 (o versiones anteriores, dependiendo de su sistema). Primero, asegúrese de que esta referencia esté habilitada en su proyecto yendo a Herramientas > Referencias en el editor de VBA y marcando Microsoft XML, v6.0.

Aquí le mostramos cómo enviar una simple solicitud HTTP GET:

Dim httpRequest Como Object
Set httpRequest = CreateObject("MSXML2.XMLHTTP.6.0")

With httpRequest
    .Open "GET", "https://api.example.com/data", False
    .send
    If .Status = 200 Then
        Debug.Print .responseText
    Else
        Debug.Print "Error: " & .Status & " - " & .statusText
    End If
End With

Para una solicitud POST, donde necesitamos enviar datos (por ejemplo, JSON) a un servidor:

Dim httpRequest Como Object, postData Como String
Set httpRequest = CreateObject("MSXML2.XMLHTTP.6.0")
postData = "{""key"":""value""}"

With httpRequest
    .Open "POST", "https://api.example.com/submit", False
    .setRequestHeader "Content-Type", "application/json"
    .send postData
    If .Status = 200 Then
        Debug.Print .responseText
    Else
        Debug.Print "Error: " & .Status & " - " & .statusText
    End If
End With

La salida de muestra para una solicitud exitosa podría ser una cadena JSON o una página HTML, dependiendo de la API o página web con la que esté interactuando:

{"data": "Esta es la respuesta del servidor"}

Análisis Profundo

El método mostrado utiliza el objeto MSXML2.XMLHTTP, parte de los Servicios Centrales XML de Microsoft (MSXML). Fue introducido para ofrecer a los desarrolladores de VBA una forma de realizar operaciones basadas en XML y, con el tiempo, se convirtió en una herramienta común para solicitudes HTTP, incluso cuando no se trabaja directamente con datos XML. A pesar de su edad, sigue siendo una opción confiable para interacciones web simples en VBA.

Sin embargo, VBA y sus mecanismos de solicitud HTTP carecen de la robustez y flexibilidad que se encuentran en entornos de programación modernos. Por ejemplo, manejar solicitudes asíncronas o trabajar dentro de aplicaciones que requieren características HTTP avanzadas (como websockets o eventos enviados por el servidor) está fuera del alcance de VBA. Cuando se trabaja en proyectos de integración web más complejos, los desarrolladores a menudo recurren a bibliotecas o herramientas externas, o incluso automatizan el comportamiento del navegador a través de técnicas de web scraping, aunque estas son soluciones alternativas más que soluciones.

Lenguajes y entornos como Python con su biblioteca requests o JavaScript ejecutándose en Node.js ofrecen capacidades de solicitud HTTP más potentes y versátiles directamente, incluyendo operaciones asíncronas, manejo de JSON más fácil y un extenso soporte para diferentes tecnologías web. Los desarrolladores arraigados en el ecosistema de Microsoft podrían considerar transicionar a PowerShell o C# para tareas que demandan una interacción web más sofisticada, aprovechando las extensas características de programación de red de .NET.

Así, mientras las capacidades de solicitud HTTP de VBA son adecuadas para consultas simples y tareas de obtención de datos, explorar alternativas se vuelve crucial a medida que las demandas de su proyecto evolucionan hacia el complejo y moderno paisaje web.