1

我过去如何将推文搜索到 excel 中只是从使用 rss 的 xml url 导入数据。但是,twitter 正在取消对 rss 的支持,因此我对如何将 twitter 提要输入到 excel 中感到困惑,当我点击刷新时,它能够更新。这里的问题是我几乎没有编程知识,因此我在使用这个新的身份验证代码时遇到了问题,我想知道如何使用 VBA 来检索 json 格式的数据(它们也不支持 xml)并转换为 excel。

4

3 回答 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 回答