VBA-POST-json-API

Ich bin versucht, zu schreiben VBA-post-json-api und analysieren Sie die Ergebnisse in ein Arbeitsblatt ein. Ich kann das generieren von JSON und bin zuversichtlich, dass ich analysieren kann das Ergebnis in das, was ich brauche.

Ich weiß, es gibt online-tools für die Konvertierung von json zu vba und zurück und browser-add-ins für post-Anfragen, aber ich bin der einzige im Büro, die können dies tun, wenn ich krank bin oder auf Urlaub würde ich gerne automatisieren. Zu tun, die ich brauche zu senden, json und vielleicht speichern Sie die Antwort, so kann ich analysieren.

Ich bin neu in der coding-posting so eine Anfrage wie diese über meinen Kopf.
Bisher habe ich folgenden code zum schreiben der json. Ich würde schätzen jede Hilfe, die mir gestartet. Bei Bedarf kann ich nach einer Probe von der json-oder den api-würde ich mag, um es veröffentlichen zu können.

Entschuldigung für die schlechte code, den ich weiß, ich kann es verbessern, aber wollen, um die json-Antwort, wie ich denke, es wird der schwierigste Teil.

BEARBEITEN Fortschritte gemacht Haben. Jetzt können senden Sie einen JSON-string an die URL an und erhalten die Antwort. Es ist jedoch immer die Rückkehr ein Fehler:

"{
""Nachricht"": ""ist Ein Fehler aufgetreten.""
}"

Wenn ich manuell senden Sie die json mit httpRequestor das Ergebnis wird korrekt zurückgegeben.
Dies scheint zu suggerieren, dass irgendwo im code die JSON wird immer vermischt oder verändert irgendwie, wenn es gepostet wird.

Aktualisierten code unten. (Entfernt jede Bezugnahme auf die tatsächlichen Daten)

EDIT 2 Feste und arbeiten.
Entfernt Zitate aus

objHTTP.send ("Json")

    Private Sub CommandButton21_Click()

Dim h_1 As String
Dim h_2 As String

h_1 = Range("A1")
h_2 = Range("B1")
h_3 = Range("C1")
h_4 = Range("D1")
h_5 = Range("E1")
h_6 = Range("F1")

sv_1 = 2
sv_2 = 2
sv_3 = 2
sv_4 = 2
sv_5 = 2
sv_6 = 2

For f = 15 To 21
v_1 = Range("A" & sv_1)
v_2 = Range("B" & sv_2)
v_3 = Range("C" & sv_3)
v_4 = Range("D" & sv_4)
v_5 = Range("E" & sv_5)
v_6 = Range("F" & sv_6)
y = "[{""" & h_1 & """:""" & v_1 & """,""" & h_2 & """:""" & v_2 & """,""" & h_3 & """:""" & v_3 & """,""" & h_4 & """:""" & v_4 & """,""" & h_5 & """:""" & v_5 & """,""" & h_6 & """:""" & v_6 & """ }]"

Range("A" & f).Value = y
sv_1 = sv_1 + 1
sv_2 = sv_2 + 1
sv_3 = sv_3 + 1
sv_4 = sv_4 + 1
sv_5 = sv_5 + 1
sv_6 = sv_6 + 1
Next f





    Dim objHTTP As Object
    Dim Json As String
    Json = Range("A15")
    Dim result As String
    'Set objIE = CreateObject("InternetExplorer.Application") ' Don't think this is needed
    'objIE.navigate "about:blank" ' Don't think this is needed
    'objIE.Visible = False ' Don't think this is needed
    Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
    URl = "http://myApi/iSendJsonTo"
    objHTTP.Open "POST", URl, False
    'objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
   objHTTP.setRequestHeader "Content-type", "application/json"
   objHTTP.send ("Json")
   result = objHTTP.responseText
   'objIE.document.Write result ' Don't think this is needed

   'Some simple debugging
   Range("A25").Value = result
   Range("A26").Value = Json


   Set objHTTP = Nothing
  • Beschreiben Sie die Aktionen, die Sie manuell tun, und die, die Sie automatisieren möchten.
  • Konvertieren der Daten in json und buchen Sie zu einem URL mit httpRequester (Firefox add-in). Kopieren Sie den response-json und konvertieren es zurück zu excel dann die Daten einfügen wieder in excel. Ich bin mit der convertcsv.com, die Daten zu konvertieren und zurück. Was ich tun möchte ist Sie vba verwenden, um Daten zu Parsen, anstatt dem kopieren in convertcsv.com, die ich tun kann, mit string-manipulation, und verwenden Sie excel zu senden, json und Holen Sie den response-json, das scheint schwieriger zu sein.
  • Fand einige gute-code bei stackoverflow.com/questions/23663149/... war in der Lage, senden Sie die json-aber das Ergebnis ist falsch. Bearbeitet Frage mit mehr info.
  • Behoben. Dank omegastripes für das posten 🙂
InformationsquelleAutor deving | 2015-03-12
Schreibe einen Kommentar