使用新的API v1.1将exet搜索到excel中

时间:2013-03-09 05:11:34

标签: json excel-vba get twitter twitter-oauth

我以前如何将推文搜索到excel只是从使用rss的xml url导入数据。然而,Twitter正在删除对rss的支持,因此我很难知道如何将twitter提供到excel中,当我点击刷新时能够更新。这里的问题是我几乎没有编程知识,因此我遇到了这个新的身份验证代码的麻烦,我想知道如何使用VBA来检索json格式的数据(他们也不支持xml)并转换为excel。

3 个答案:

答案 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

如果以上内容不足以让您前进,我最近发布了一些文章herehere,这些文章详细介绍了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!