我以前如何将推文搜索到excel只是从使用rss的xml url导入数据。然而,Twitter正在删除对rss的支持,因此我很难知道如何将twitter提供到excel中,当我点击刷新时能够更新。这里的问题是我几乎没有编程知识,因此我遇到了这个新的身份验证代码的麻烦,我想知道如何使用VBA来检索json格式的数据(他们也不支持xml)并转换为excel。
答案 0 :(得分:3)
下面是一个'准系统'功能,显示了一般的想法;它从特定用户的时间轴(在本例中为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
如果以上内容不足以让您前进,我最近发布了一些文章here和here,这些文章详细介绍了VBA推文过程,并包含了许多功能/有助于处理OAuth身份验证,URL编码等的技术......
答案 1 :(得分:1)
我曾在一篇博文中描述过这个。详细信息如下:JSON APIs in Excel。
基本上我使用this JSON VBA library来运行此代码:
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问题。
答案 2 :(得分:0)
此处描述了将JSON解析为Excel,source。 GL!