2013-03-09 72 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編碼等...