我过去如何将推文搜索到 excel 中只是从使用 rss 的 xml url 导入数据。但是,twitter 正在取消对 rss 的支持,因此我对如何将 twitter 提要输入到 excel 中感到困惑,当我点击刷新时,它能够更新。这里的问题是我几乎没有编程知识,因此我在使用这个新的身份验证代码时遇到了问题,我想知道如何使用 VBA 来检索 json 格式的数据(它们也不支持 xml)并转换为 excel。
问问题
3443 次
3 回答
4
下面是一个显示总体思路的“准系统”功能;它从特定用户的时间线(在本例中为 Stephen Colbert!)中提取最近的 5 条推文,并将推文创建日期和推文文本输出到电子表格的行中。
Function get_timeline(strHeader as String) As Boolean
'strHeader is a properly-constructed header as required by Twitter
Dim objRest As WinHttp.WinHttpRequest
Set objRest = New WinHttp.WinHttpRequest
objRest.Open "GET", "https://api.twitter.com/1.1/statuses/user_timeline.json?count=5&exclude_replies=true&screen_name=StephenAtHome", False
objRest.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
objRest.setRequestHeader "Authorization", strHeader
objRest.send
objRest.waitForResponse
If objRest.Status = "200" Then
'We use the JSON parser from http://www.ediy.co.nz/vbjson-json-parser-library-in-vb6-xidc55680.html
Dim objResp As Object
Set objResp = JSON.parse(objRest.responseText)
Dim intZ As Integer
For intZ = 1 To intCount
Sheets("Sheet1").Range("A" & intZ).Value = objResp.Item(intZ).Item("created_at")
Sheets("Sheet1").Range("B" & intZ).Value = objResp.Item(intZ).Item("text")
Next intZ
get_timeline = True
Else
get_timeline = False
End If
Set objResp = Nothing
Set objRest = Nothing
End Function
如果以上内容不足以让您继续前进,我最近在此处和此处发布了一些文章,其中详细介绍了使用 VBA 发送推文的过程,并包含了许多对处理 OAuth 身份验证有用的功能/技术, URL编码等...
于 2013-06-24T01:34:04.557 回答
1
我曾经在一篇博文中描述过这一点。详细信息在这里:Excel 中的 JSON API。
基本上我使用这个 JSON VBA 库来运行这段代码:
Dim DistCache As New Scripting.Dictionary
Function CalculateDistance(startAddress As String, endAddress As String)
Dim key As String
key = startAddress & "|" & endAddress
If DistCache.Exists(key) Then
v = DistCache(key)
Else
Dim request As New SyncWebRequest
request.AjaxGet ("http://maps.googleapis.com/maps/api/directions/json?origin=" & startAddress & "&destination=" & endAddress & "&sensor=false")
Dim json As String
json = request.Response
Dim parser As New JSONLib
Set result = parser.parse(json)
Set routes = result("routes")
Set route = routes(1)
Set legs = route("legs")
Set leg = legs(1)
Set dist = leg("distance")
v = dist("value")
DistCache(key) = v
End If
CalculateDistance = v
End Function
缓存非常糟糕,但这意味着您不会两次运行相同的 Web 查询。我希望你能适应你的 Twitter 问题。
于 2013-04-24T01:00:05.053 回答
0
此处描述了将 JSON 解析为 Excel,来源。GL!
于 2013-03-09T08:10:35.010 回答