如何浏览box.com文件夹以选择文件并下载所选文件

时间:2012-08-28 12:00:51

标签: vba excel-vba cloud box-api excel

我需要一个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

2 个答案:

答案 0 :(得分:1)

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

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专家,但大致应该遵循这些方针。

答案 1 :(得分:0)

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

我安装了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