如何在Excel宏(VBA)中使用RESTful API?

45

是否有插件或库可用于通过Excel(可能使用宏)访问RESTful API,然后将响应存储在某个地方(可能是工作表中)。

抱歉没有示例代码。我不是VBA程序员。

3个回答

76

您可以在VBA中使用MSXML 库。然后您可以创建一个XMlHTTP请求并执行GET或POST等操作。以下是一个代码示例。它使用晚期绑定,即无需首先引用库:

Option Explicit

Sub Test_LateBinding()

    Dim objRequest As Object
    Dim strUrl As String
    Dim blnAsync As Boolean
    Dim strResponse As String

    Set objRequest = CreateObject("MSXML2.XMLHTTP")
    strUrl = "https://jsonplaceholder.typicode.com/posts/1"
    blnAsync = True

    With objRequest
        .Open "GET", strUrl, blnAsync
        .SetRequestHeader "Content-Type", "application/json"
        .Send
        'spin wheels whilst waiting for response
        While objRequest.readyState <> 4
            DoEvents
        Wend
        strResponse = .ResponseText
    End With

    Debug.Print strResponse

End Sub

我正在使用这个测试网站 - JSONPlaceholder - 来调用RESTful API。以下是响应结果:

enter image description here

请注意,我发现如果你a)进行同步请求,或者b)使用http而不是https,则使用此方法调用该网站会失败。


谢谢 Robin,我今天会尝试这个。 - Viral Patel
@Robin Mackenzie 我了解答案解释了如何从Jira获取一些信息,但问题也涉及如何将其放入Excel表格中。我想知道Json中获得的响应如何用于将其写入工作表中。通常,Jira用户使用JQL与JIRA交互,我想发送查询然后将响应放入工作表会很有用。 - David Leal
4
一旦你获得了 JSON 数据,你可以解析、操作或更新表格等 - 例如,请参考此问题:https://dev59.com/Xqrka4cB1Zd3GeqPl_ch - Robin Mackenzie
很棒的解决方案,Robin。我知道Excel VBA几乎可以做任何事情,这让我不必再学习JS了。当然,学习JS肯定非常有用,但现在我没有时间。 - Rick Henderson
太好了,非常感谢你。 - Luke

10

这里有一个使用REST API从JIRA获取信息并加载到Excel工作表中的详细示例。该帖子中可以下载具有宏的Excel文件。无论如何,它都包括每个步骤的详细说明,以防您想为特定目的自己完成此操作。在此不再赘述。我一直在寻找类似的解决方案,到目前为止,这是唯一一篇描述了从头到尾解决这个问题的文章。


3
不可否认,这个例子是一个深入使用JIRA的长篇例子,但它似乎涵盖了很多人应该知道的东西。大卫做得很好。 - Rick Henderson

0

如果你正在寻找一个即插即用的Excel插件(无需编写VBA),那么xlbroadcaster.io可以满足你的需求。它还可以将JSON响应格式化到Excel单元格中。
我开始使用它来调用私有API,但它也适用于公共API。
非商业用途免费。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接