You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 06:30:01