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