2013-03-09 75 views
0

我如何将鸣叫搜索到excel只是从使用rss的xml网址导入数据。但是,Twitter正在取消对rss的支持,因此我很难将如何将twitter feed转换为可以在刷新时更新的excel。这里的问题是,我有一点编程知识,因此我有这个新的认证代码的麻烦,我想知道如何使用VBA检索JSON格式的数据(他们不支持XML),并转化为Excel。使用新API获取鸣叫搜索到excel v1.1

回答

0

将JSON解析到Excel中描述如下,source。 GL!

+0

感谢Json的信息,但是有谁知道如何解决数据导入excel? – user2150760 2013-03-14 04:41:00

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问题。

3

下面是一个'准系统'功能,显示了总体思路;它从特定用户的时间线(在这种情况下,斯蒂芬科尔伯特!)中抽取最近的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 

如果上述还不足以让你去,我最近发布writeups herehere它通过啁啾与 - VBA程序走的一些细节,并包含多项功能/技术是用于处理OAuth认证,URL编码等...