2013-02-20 1 views
7

나는 QueryTables를 사용하여 HTTP 엔드 포인트에서 데이터를 검색하는 방법에 대해 설명합니다 How can I send an HTTP POST request to a server from Excel using VBA?MacOS의 Excel 내에서 HTTP 끝점에서 JSON을 검색하고 구문 분석하려면 어떻게해야합니까?

the MacOS-friendly response을 보았다. 단일 문자열을 검색하여 셀에 채우는 방법을 보여줍니다.

모두 좋다. 이제는 하나 이상의 값을 가져 오려고합니다. 그것은 큰 JSON 문자열이며 Excel VBA 내에서 하나 이상의 셀을 채우기 전에 사후 처리하려고합니다.

어떻게 가능합니까?

나는 한 가지 방법을 생각해 볼 수 있습니다. QueryTables의 결과를 숨겨진 셀에 배치 한 다음 숨겨진 셀을 후 처리하여 다른 셀을 채 웁니다. 아직 평가하지 않은 VBA 용 JSON 라이브러리가 몇 가지 있습니다.

하지만 이것은 꽤 해킹 된 것 같습니다. 정말 JSON을 셀에 값으로 저장하는 것에 의존하지 않으려합니다. 내 VBA 코드의 변수에만 저장하고 싶습니다. 마치 CreateObject ("MSXML2.ServerXMLHTTP")를 사용하는 것처럼. (NB : MacOS에서 Excel 내에서 CreateObject()를 사용할 수 없습니다).

그리고 가장 좋은 대답은 다음과 같습니다. Excel에서 응용 프로그램을 실행하려면 Windows 컴퓨터를 사용하십시오.

답변

8

VBA에서 Worksheets(0).QueryTable 메서드를 사용할 수 있습니다. 설명서 나 google을보십시오. 따라서 json 문자열을 셀에 저장할 필요가 없습니다.

또는 나는 JSON 문자열을 다운로드

Public Function GetWebSource(ByRef URL As String) As String 
    Dim xml As IXMLHTTPRequest 
    On Error Resume Next 
    Set xml = CreateObject("Microsoft.XMLHTTP") 
    With xml 
     .Open "GET", URL, False 
     .send 
     GetWebSource = .responseText 
    End With 
    Set xml = Nothing 
End Function 

같은 것을 사용했다.

파서를 둘러보십시오. Parsing JSON in Excel VBA과 같은 것이 귀하의 필요를 채워 줄 것입니다.

+1

예, QueryTables를 사용할 수 있습니다. 하지만 내가 봤 거든 QueryTable의 결과를 셀을 제외한 모든 것에 저장하는 방법을 찾지 못한다. 그게 나에게 꽤 해킹 된 느낌인데, 그래서 나는 대안을 물었습니다. 값을 변수에 저장하는 방법을 알고 있다면 그 값을 설명하거나 문서 링크로 안내해 주시면 감사하겠습니다. 또한'Microsoft.XMLHTTP'는 MacOS에서 Excel 내에서 작동하지 않습니다. – Cheeso

+1

우프, 힘들 것입니다. 내 생각 엔 당신이 맞다. QueryTable은 내용을 셀에 저장 만합니다 (실제로 연결된 모든 데이터 소스가있는 테이블이므로 함수의 전체 지점 임). 개인적으로, 필자는 위의 방법이나 DLL을 알고 있지만 창문이기도합니다. 그래도 Excel은 Windows에서 사용하도록 제작되었습니다. 모든 기능을 원한다면 부트 캠프를 사용하십시오. 또 다른 방법은 컬과 같은 도구를 사용하여 쉘을 통해 실행하는 것입니다. – mffap

+0

정말 좋은 방법. 함수 결과가 너무 커서 리턴 할 수 있는지 알 수 있습니까? 너무 큰 끈? – mango

관련 문제