Visual Basic for Applications:
Sende en HTTP-forespørsel

Slik gjør du:

Nøkkelen til å sende en HTTP-forespørsel i VBA er å utnytte Microsoft XML, v6.0-biblioteket (eller eldre versjoner, avhengig av systemet ditt). Sørg først for at denne referansen er aktivert i prosjektet ditt ved å gå til Verktøy > Referanser i VBA-editoren og merke av for Microsoft XML, v6.0.

Her er hvordan du sender en enkel HTTP GET-forespørsel:

Dim httpRequest As 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 "Feil: " & .Status & " - " & .statusText
    End If
End With

For en POST-forespørsel, hvor vi trenger å sende data (f.eks., JSON) til en server:

Dim httpRequest As Object, postData As String
Set httpRequest = CreateObject("MSXML2.XMLHTTP.6.0")
postData = "{""nøkkel"":""verdi""}"

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 "Feil: " & .Status & " - " & .statusText
    End If
End With

Eksempelutdata for en vellykket forespørsel kan være en JSON-streng eller en HTML-side, avhengig av API-et eller nettsiden du samhandler med:

{"data": "Dette er responsen fra serveren"}

Dypdykk

Metoden som vises utnytter MSXML2.XMLHTTP-objektet, en del av Microsoft XML Core Services (MSXML). Det ble introdusert for å tilby VBA-utviklere en måte å utføre XML-baserte operasjoner på og, over tid, ble det et vanlig verktøy for HTTP-forespørsler, selv når det ikke jobbes direkte med XML-data. Til tross for sin alder, forblir det et pålitelig alternativ for enkle webinteraksjoner i VBA.

Imidlertid mangler VBA og dens HTTP-forespørselsmekanismer robustheten og fleksibiliteten som finnes i moderne programmeringsmiljøer. For eksempel er håndtering av asynkrone forespørsler eller arbeid innenfor applikasjoner som krever avanserte HTTP-funksjoner (som websockets eller server-sent events) utenfor VBA sitt omfang. Når man jobber med mer komplekse webintegreringsprosjekter, utnytter utviklere ofte eksterne biblioteker eller verktøy, eller til og med automatiserer nettleseratferd via web scraping-teknikker, selv om disse er omveier snarere enn løsninger.

Språk og miljøer som Python med sitt requests-bibliotek eller JavaScript som kjører på Node.js tilbyr mer kraftfulle og allsidige HTTP-forespørselskapasiteter rett ut av boksen, inkludert asynkrone operasjoner, enklere JSON-håndtering og omfattende støtte for forskjellige webteknologier. Utviklere forankret i Microsoft-økosystemet kan vurdere å gå over til PowerShell eller C# for oppgaver som krever mer sofistikert webinteraksjon, og benytte .NETs omfattende nettverksprogrammeringsfunksjoner.

Dermed, mens VBA sine HTTP-forespørselskapasiteter er tilstrekkelige for enkle forespørsler og datainnhentingsoppgaver, blir det avgjørende å utforske alternativer når prosjektets krav utvikler seg mot det komplekse og moderne weblandskapet.