发送里面的数组字符串POST请求VBAExcel

Send an array string inside POST Request VBA Excel

我正在尝试 向 API 发送 post 请求,该请求将字符串数组作为参数

出现一个错误,指定类型是不允许的,当请求被正确发送时,所有数据都留在数组的第一个位置(keyArray[0])。

我使用的代码如下:

Dim lastRow As Variant
lastRow = Range("B" & Rows.Count).End(xlUp).Row

Dim vvArray As Variant
vvArray = Range("B12:B" & lastRow).Value

Dim vvArrayString() As String
ReDim vvArrayString(1 To UBound(vvArray))
For i = 1 To UBound(vvArray)
    vvArrayString(i) = vvArray(i, 1)
Next

Dim TCRequestItem As Object
Set TCRequestItem = CreateObject("WinHttp.WinHttpRequest.5.1")
TCRequestItem.Open "POST", "url", False
TCRequestItem.setRequestHeader "Content-type", "application/x-www-form-urlencoded"
TCRequestItem.send ("keyArray=" + vvArrayString)

我不明白你为什么设置vvArray然后设置vvArrayString?为什么不通过遍历 B 列直接进入 vvArrayString

Dim LastRow as Long 
LastRow = Range("B" & Rows.Count).End(xlUp).Row

Dim vvArrayString(1 to LastRow-11)
For i = 12 to LastRow
    vvArrayString(1-11) = Range("B" & i).text
Next

这应该为您正确设置数组,然后您可以继续下一段代码(http 请求)。

编辑: http 请求也可以使用类似的循环,因为它采用如此简单的重复模式。但是你需要一个单独的变量;

Dim strPostReq as String 'here's your separate variable

For x = 1 to LastRow-11
    'Just add the same pattern to the end of the string each time
    strPostReq = strPostReq & "keyArray[" & x-1 & "]=" & vvArrayString(x) & "&"
Next
'Then remove the last '&' from the string
strPostReq = Left(strPostReq, Len(strPostReq) - 1)

然后你只需要 TCRequestItem.send(strPostReq)

而不是之前的长字符串