2012-08-28 97 views
1

我需要一個excel宏(vba)通過遍歷現有文件夾從box.com中選擇一個文件,同時我需要上傳從我的機器到使用Excel宏的box.com文件夾中的文件。我在網上搜索了很長時間。但沒用。請幫助或嘗試提供一些想法如何實現這一點。如何瀏覽box.com文件夾來選擇一個文件並下載所選文件

在此先感謝。

-Edit

我正在使用下面的代碼獲取身份驗證令牌。但是,我在.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 

回答

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專家的事,但大致沿着這些路線應該工作。

+0

感謝您的建議。我在vba下標記了這個問題。我會試試這個,讓你知道調查結果。無論如何非常感謝寶貴的信息。 – user1091111

+0

您可以通過使用excel-vba傳遞api-key來發布代碼以獲得auth令牌嗎? – user1091111

+0

你是否想爲用戶獲取一個授權令牌?我假設你已經獲得了一個API密鑰,並通過用戶流進行身份驗證http://developers.box.com/get-started/#authenticating – Peter

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 
相關問題