如何使用VBA调用带参数的cURL API并将结果写入单元格
解决方案:直接用VBA原生组件实现API调用,无需额外使用cURL
你有VBA基础的话完全不用学习cURL,直接用VBA内置的HTTP请求组件就能实现你要的API调用、解析结果写入Excel的需求。
步骤1:前置准备
- 调用API使用
WinHttpRequest对象,采用后期绑定方式无需提前引用额外库,所有版本Excel都支持 - 解析JSON格式的返回结果需要导入VBA-JSON模块,直接将对应的.bas模块文件导入你的VBA工程即可,导入后需要在VBA编辑器的「工具-引用」中勾选
Microsoft Scripting Runtime
步骤2:完整可运行代码示例
Sub CallAPIToExcel() ' 声明变量 Dim http As Object Dim jsonBody As String Dim response As String Dim jsonResponse As Object Dim API_KEY As String Dim API_URL As String ' -------------------------- ' 配置参数,替换为你的实际值 ' -------------------------- API_KEY = "你的实际API密钥" API_URL = "https://url.com/example/example" ' 创建HTTP请求对象 Set http = CreateObject("WinHttp.WinHttpRequest.5.1") ' 构造请求体,对应cURL示例中-d后面的JSON内容 ' 注意VBA中双引号需要用两个双引号转义 jsonBody = "{""param1"":""example"",""param2"":""example"",""param3"":""example""," & _ """param4"":""example"",""param5"":""example"",""param6"":""example""," & _ """stop"":[""example""]}" ' 打开POST请求 http.Open "POST", API_URL, False ' 设置请求头,完全对应cURL示例中两个-H参数 http.SetRequestHeader "Content-Type", "application/json" http.SetRequestHeader "Authorization", "Bearer " & API_KEY ' 发送请求 http.Send jsonBody ' 获得接口返回的字符串结果 response = http.ResponseText ' 解析JSON格式的返回结果 Set jsonResponse = JsonConverter.ParseJson(response) ' -------------------------- ' 写入Excel单元格,按需修改 ' -------------------------- ' 示例1:直接把完整返回字符串写入A1单元格 Range("A1").Value = response ' 示例2:取返回结果里的指定字段写入,假设返回结果有key为result的字段 ' Range("A1").Value = jsonResponse("result") ' 示例3:如果返回结果是数组,取数组第一个元素的指定字段 ' Range("A1").Value = jsonResponse(1)("result") ' 释放对象 Set http = Nothing Set jsonResponse = Nothing End Sub
常见问题处理
- 运行提示权限错误:检查API密钥是否正确,Authorization头中Bearer和密钥之间有没有空格
- 运行返回400错误:检查请求体的JSON格式是否正确,有没有漏写转义的双引号、逗号
- 64位Excel运行VBA-JSON报错:找到VBA-JSON模块里的Declare函数声明,在前面加上
PtrSafe关键字即可 - 需要循环写入多个结果:如果接口返回的是数组,直接用For循环遍历jsonResponse对象,依次写入对应单元格即可
内容的提问来源于stack exchange,提问作者smib98
相关产品推荐
相关产品推荐

