2014-09-13 2 views
0

나는 내가 Excel에서 열이 Excel 2003의페이스 북 그래프 데이터를 Microsoft Excel을 사용하여 GET 요청을 만들기

을 사용하고 엑셀

내부 GET 요청을 사용하여 페이스 북 그래프에서

을 메타 데이터를 얻으려고 페이스 북 그래프에 사용 된 5,000 개의 app_scoped_user_id가 있습니다. https://graph.facebook.com/app_scoped_user_id에있는 각 그래프에서 정보를 추출하는 매크로를 만들고 싶습니다. 각 그래프는 내가 너무 내 Excel에서 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 페이지입니다.

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

하거나

id | everything as a text string 

확실하지 : 첫 번째 열에서 ID를 기반으로 동적으로 다음과 같이 각 행을 얻을 엑셀 내에서 GET 요청으로이 작업을 수행하는 방법이 있나요 어떻게위한 스크립트를 작성하는 방법은 어디서

이 시도 당신에게

+0

그건 HTML이 아니고 JSON입니다. JSON은 자바 스크립트 기반의 "데이터 전송"표기법입니다. VBA에서 JSON을 구문 분석하는 방법에 대한 몇 가지 접근법을 찾으려면 "VBA JSON"으로 인터넷 검색을 시도하십시오. XMLHTTP를 사용하여 실제 GET을 수행 할 수 있습니다. –

+0

감사합니다, 팀 윌리엄스 – hopui

답변

0

감사 시작 VBA 편집기 내부의 모듈을 만들에서는 Microsoft.XMLHTTP을 찾기 위해 시도했지만 아무 생각했습니다 하나, 첫 번째 100 개의 ID를받는 예가 있습니다. 일부 경우에 IMO는 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

관련 문제