2014-09-13 62 views
0

我试图使用GET请求从Facebook获取图表元数据,Excel内部制作使用Microsoft Excel为Facebook图形数据的GET请求

我使用Excel 2003中

我在Excel中的列在Facebook图表中使用了5,000个app_scoped_user_id。我想创建一个宏来从每个图中提取信息,该图在https://graph.facebook.com/app_scoped_user_id处找到。每幅图是一个简单的HTML页面,内容如下

{ 
    "id": "XXXXXXXXXXXX", 
    "first_name": "XXX", 
    "gender": "XXX", 
    "last_name": "XXX", 
    "link": "https://www.facebook.com/XXX", 
    "locale": "id_ID", 
    "name": "XXX", 
    "username": "XXX" 
} 

我愿借此HTML解析,所以我可以得到每场进旁边我的Excel中app_scoped_user_id细胞。有没有办法做到这一点是在Excel GET请求动态获取每一行看起来像这样的基础上,在第一栏的ID:

id | first_name | last_name | gender | link | locale | username 

或者干脆

id | everything as a text string 

不知道如何写这个剧本,我试图查找Microsoft.XMLHTTP使VBA编辑器中的模块,但不知道从哪里开始

谢谢

+0

这不是HTML,而是JSON,这是一个基于JavaScript的“数据传输”符号。尝试使用“VBA JSON”搜索关于如何在VBA中解析JSON的几种方法。您可以使用XMLHTTP来执行实际的GET。 – 2014-09-13 22:45:13

+0

谢谢,蒂姆威廉姆斯 – hopui 2014-09-14 21:38:24

回答

0

试试这个一,有一个例子获得前100个ID。国际海事组织在某些情况下没有必要涉及JSON解析,Split函数会做。

Sub GetSomeGraphData() 
    Dim lId, lRow, aPattern 
    aPattern = Array("id", "first_name", "last_name", "gender", "link", "locale", "username") 
    lRow = 1 
    ' example getting first 100 records 
    For lId = 1 To 100 
     If WriteGraphData(lId, lRow, aPattern) Then lRow = lRow + 1 
     DoEvents 
    Next 
End Sub 

Function WriteGraphData(lId, lRow, aPattern) 
    ' lId - ID you want to get data for 
    ' lRow - Excel sheet row where to write data 
    ' aPattern - array containing the parameters to be written, in order 
    ' returns: True - if at least one cell was populated with a value, False - in case of blank line 
    Dim oXMLHttp, lCol, sProp, aTemp 
    Set oXMLHttp = CreateObject("Microsoft.XMLHttp") 
    oXMLHttp.Open "GET", "https://graph.facebook.com/" & lId, False 
    oXMLHttp.Send ("") 
    lCol = 1 
    WriteGraphData = False 
    For Each sProp In aPattern 
     aTemp = Split(oXMLHttp.ResponseText, """" & sProp & """: """) 
     If UBound(aTemp) = 1 Then 
      aTemp = Split(aTemp(1), """") 
      Cells(lRow, lCol).Value = aTemp(0) 
      WriteGraphData = True 
     End If 
     lCol = lCol + 1 
    Next 
    Set oXMLHttp = Nothing 
End Function 
+0

非常感谢,这帮助我与我的公式 – hopui 2014-10-30 11:08:08