VBA POST JSON到API

我正在尝试写VBA来发布JSON到一个API,并将结果parsing到工作表中。 我可以生成JSON,并有信心我可以parsing我所需要的结果。

我知道有一些在线工具可以将json转换为vba,并且可以通过浏览器添加来发布请求,但是我是办公室中唯一可以这样做的工具,所以如果我生病或者休假,我想自动化。 要做到这一点,我需要发送JSON,也许存储的响应,所以我可以parsing它。

我是新来的编码,所以张贴这样的请求是在我的头上。 到目前为止,我有以下代码来编写JSON。 我将不胜感激任何帮助,让我开始。 如果需要的话,我可以发布一个json或者我想发布给它的api的样本。

可怜的代码道歉我知道我可以改进它,但想获得JSON响应,因为我认为这将是最具挑战性的部分。

编辑已经取得了一些进展。 现在可以发送一个JSONstring到URL并得到响应。 然而,它总是返回失败:

“{”“message”“:”“发生错误。”“}”

如果我用httpRequestor手动发送json结果是正确返回。 这似乎表明,在代码的某个地方,JSON被混淆了,或者在被发布的时候被修改了。

更新下面的代码。 (删除了对实际数据的任何引用)

编辑2固定和工作。 从中删除了引号

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 

这是发送JSON的代码,清理了一下。

  Dim objHTTP As Object Dim Json As String Json = Range("A15") 'here I am pulling in an existing json string to test it. String is created in other VBA code Dim result As String Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP") URl = "http://myApi/iSendJsonto/" objHTTP.Open "POST", URl, False objHTTP.setRequestHeader "Content-type", "application/json" objHTTP.send (Json) result = objHTTP.responseText 'Some simple debugging Range("A25").Value = result Range("A26").Value = Json Set objHTTP = Nothing