1

我需要一个 excel 宏 (vba) 通过迭代现有文件夹从 box.com 中选择一个文件,同时我需要使用 excel 宏将文件从我的机器上传到 box.com 文件夹。我在网上找了很久。但是没有用。请帮助或尝试提供一些想法如何实现这一目标。

提前致谢。

-编辑

我正在使用以下代码获取身份验证令牌。但是我在 .send(url) 的地方收到一条错误消息。错误消息是“无法解析服务器名称或地址”。

Function getAuthToken()

    Dim WinHttpReq As WinHttp.WinHttpRequest
    Dim api_key As String

    api_key = "{api_key}"

    Set WinHttpReq = New WinHttp.WinHttpRequest

   strUrl = "https://www.box.net/api/1.0/rest?action=get_ticket&api_key=" & api_key

  WinHttpReq.Open Method:="GET", url:=strUrl, async:=False
  WinHttpReq.Send
  getTicket = WinHttpReq.responseText
  Debug.Print getTicket

End Function
4

2 回答 2

1

不是 vba 专家,我怀疑如果你用 vba 标签标记你的问题,你会得到更多答案。但是,一些快速浏览表明 vba 可以通过执行以下操作来调用 REST api:

Dim MyURL as String
MyURL = "http://api.box.com/2.0/folders/0.xml"
Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")

With objHTTP
    .Open "GET", MyURL, False
    .setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    .setRequestHeader "Authorization", "BoxAuth api_key=<your api key>&auth_token=<your auth token>
    .send (MyURL)
End With

我会听从真正的 VBA 专家的意见,但大致遵循这些原则的东西应该可以工作。

于 2012-08-28T23:55:55.473 回答
0

是的,这令人沮丧。我尝试了像 Peter 一样使用 WinHttp.WinHttpRequest.5.1 和 MSXML2.ServerXMLHTTP 的代码,并且两者都得到了一个零长度的字符串。没有错误信息或任何东西。

我安装了 cURL 并测试了 URL。它在那里工作得很好。下面的脚本也适用于通用 JSON Web 服务,例如 jsonplaceholder.typicode.com。

所有这一切让我认为 Box.com 正在接收消息,检测到它来自未经批准的来源,并且没有返回任何内容。. . 可能出于安全原因。

Option Explicit
Const URL As String = "https://api.box.com/2.0/folders/0 -H ""Authorization: Bearer MyToken"""
'Const URL As String = "https://jsonplaceholder.typicode.com/posts/1"
Sub Test()

    Dim winHTTP As Object
'    Set winHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
    Set winHTTP = CreateObject("MSXML2.ServerXMLHTTP")

    winHTTP.Open "GET", URL
    winHTTP.setRequestHeader "Content-Type", "application/json"
    winHTTP.send
    Debug.Print winHTTP.ResponseText

    If Len(winHTTP.ResponseText) = 0 Then
        MsgBox "blank string returned"
    Else
        Dim objResponse As Object
        Set objResponse = JsonConverter.ParseJson(winHTTP.ResponseText) 'Converter from Tim Hall - https://github.com/VBA-tools/VBA-JSON
    End If



 End Sub
于 2017-10-04T15:43:09.413 回答