코스피 200을 가져오는 코드를 Jsonconver 없이 만들어 보았다.
단점은 엑셀 64비트를 사용하시는 분들은 초기에 설치파일을 본인 컴에 설치하신 후 사용하셔야 한다.
설치는 압축을 풀고 EXE 파일을 눌러서 설치하면 된다.
더보기
Option Explicit
Sub get_kospi200()
Ref.xmlhtml '= xmlHttp 초기 바인딩 참조
'Stop
Dim strUrl As String: strUrl = "https://m.stock.naver.com/api/json/sise/enrollItemListJson.nhn?pageSize=202" '= 네이버증권 코스피 200
Dim xmlhttp As New ServerXMLHTTP60 '= xmlHttp 초기 바인딩
Dim rngX As Range: Set rngX = [a4] '= 코스피 내용을 출력할 영역
Dim jsonStr$, rowCnt&, i&, j&
Dim JsonObj As Object
Dim JsonItem As Object
Dim StockTal As Object, StockS As Object, Row As Object
Dim keys: keys = Array("cd", "nm", "nv", "cv", "cr", "pcv", "mks", "aq", "aa")
'= 종목코드, 종목명, 현재가, 수익금, 등락률, 전일가, 시가총액, 거래량, 거래대금
Dim kosKey '= 키들을 순환
[a4:i203].ClearContents '= 영역 초기화
[b2] = Date
xmlhttp.Open "GET", strUrl
xmlhttp.Send
xmlhttp.waitForResponse '= 응답할때까지 대기
jsonStr = xmlhttp.responseText '= jsonstr = xmlHttp에서 응답된 문자열
Set JsonObj = CreateObject("MSScriptControl.ScriptControl") '= 자바스크립트를 VBA에서 이용하기 위한 선언
JsonObj.Language = "JScript" '= 자바스크립트를 통해...
Set JsonItem = JsonObj.Eval("(" & jsonStr & ")") '= JsonItem으로 json 파서
Set StockTal = CallByName(JsonItem, "result", VbGet) '= 파서된 jsonitem에서 result를 또 파서
rowCnt = CallByName(StockTal, "totCnt", VbGet) '= rowCnt 는 주식수를 구함
Set StockS = CallByName(StockTal, "itemList", VbGet) '= 전체 주식에서 개별 주식으로 파서
For i = 0 To rowCnt - 1 '= 전체 주식 수만큼 순환
Set Row = CallByName(StockS, i, VbGet) '= 전체 주식 수들을 Row개체에 담아라
j = 0
For Each kosKey In keys '= 개별 주식들의 키값을 순환
rngX(i + 1, j + 1) = CallByName(Row, kosKey, VbGet) '= 각 개별 키값을 출력
j = j + 1
Next kosKey
Next i
End Sub
네트워크탭을 보시는게 아직 익숙하지 않은 분들은 윤자동 채널에서 공부를 하시고 보시기를 권장한다.
https://www.youtube.com/watch?v=eQK7SB_E8QI
'VBA' 카테고리의 다른 글
[VBA] 고급필터를 이용한 옵션선택 (0) | 2022.08.04 |
---|---|
[VBA] 프린트 영역설정 (0) | 2022.07.13 |
[VBA] 로또번호 분석하기 (0) | 2022.06.20 |
[VBA] 맛집리스트 지도맵핑 (0) | 2022.06.18 |
[VBA] 로또 번호를 가져오기( feat. 동행복권) (0) | 2022.06.18 |
댓글