Visual Basic for Applications:
HTTP-pyynnön lähettäminen

Kuinka:

HTTP-pyynnön lähettämisen avain VBA:ssa on Microsoft XML, v6.0 -kirjaston (tai vanhempien versioiden, riippuen järjestelmästäsi) käyttö. Varmista ensin, että tämä viittaus on otettu käyttöön projektissasi menemällä Työkalut > Viittaukset VBA-editorissa ja rastittamalla Microsoft XML, v6.0.

Tässä on kuinka lähetetään yksinkertainen HTTP GET -pyyntö:

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

POST-pyynnölle, jossa meidän täytyy lähettää dataa (esim. JSON) palvelimelle:

Dim httpRequest As Object, postData As String
Set httpRequest = CreateObject("MSXML2.XMLHTTP.6.0")
postData = "{""avain"":""arvo""}"

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

Näyte tuloste onnistuneelta pyynnöltä voi olla JSON merkkijono tai HTML-sivu, riippuen API:sta tai verkkosivusta, jonka kanssa olet vuorovaikutuksessa:

{"data": "Tämä on vastaus palvelimelta"}

Syväsukellus

Esitelty menetelmä hyödyntää MSXML2.XMLHTTP -objektia, joka on osa Microsoft XML Core Services (MSXML) -palveluita. Se esiteltiin tarjoamaan VBA-kehittäjille tapa suorittaa XML-pohjaisia toimintoja ja, ajan myötä, siitä tuli yleinen työkalu HTTP-pyyntöihin, vaikka ei suoraan työskenneltäisi XML-datan parissa. Huolimatta sen iästä, se pysyy luotettavana vaihtoehtona yksinkertaisille web-vuorovaikutuksille VBA:ssa.

Kuitenkin VBA ja sen HTTP-pyyntömekanismit eivät ole yhtä vahvoja ja joustavia kuin modernit ohjelmointiympäristöt. Esimerkiksi asynkronisten pyyntöjen käsittely tai sovelluksissa työskentely, jotka vaativat edistyneitä HTTP-ominaisuuksia (kuten websockets tai palvelimelta lähetetyt tapahtumat), ovat VBA:n ulottumattomissa. Työskennellessään monimutkaisempien web-integrointiprojektien parissa, kehittäjät usein hyödyntävät ulkoisia kirjastoja tai työkaluja tai jopa automatisoivat selaimen käyttäytymistä web-kaavinnan tekniikoiden avulla, vaikka nämä ovatkin vain kiertotapoja eivätkä ratkaisuja.

Kielet ja ympäristöt, kuten Python sen requests kirjaston kanssa tai JavaScript, joka toimii Node.js:ssä, tarjoavat voimakkaampia ja monipuolisempia HTTP-pyyntöjen kyvykkyyksiä suoraan laatikosta, mukaan lukien asynkroniset toiminnot, helpomman JSON-käsittelyn ja laajan tuen erilaisille web-teknologioille. Kehittäjät, jotka ovat syvällä Microsoftin ekosysteemissä, saattavat harkita siirtymistä PowerShell- tai C#-tehtäviin, jotka vaativat monimutkaisempaa web-vuorovaikutusta, hyödyntäen .NETin laajaa verkkoprogrammointiominaisuuksia.

Näin ollen, vaikka VBA:n HTTP-pyyntöjen kyvykkyydet ovat riittäviä yksinkertaisiin tiedustelu- ja datanhakutehtäviin, vaihtoehtojen tutkiminen muuttuu välttämättömäksi, kun projektisi vaatimukset kehittyvät kohti monimutkaista ja modernia web-maisemaa.