라이브정보
방송일
2022년06월25일 (100회)
강의시간
1시간 6분
버전 안내
이번 강의는 일부 버전에서 실습이 제한됩니다.
윈도우 : 엑셀 2013 이후 버전에서 사용 가능합니다
Mac : 본 강의는 HTTP 요청을 사용하므로 Mac 엑셀에서는 진행이 불가능합니다.
보충자료
- 국토 교통부 아파트매매 실거래가 조회 API 발급
- 아파트 매매 실거래가 조회 REST API
http://openapi.molit.go.kr/OpenAPI_ToolInstallPackage/service/rest/RTMSOBJSvc/getRTMSDataSvcAptTradeDev?파라미터
자막을 불러오는 중...
total 값이 0으로 나오고 "94런타임 오류"가 계속나는데 왜그럴까요
명령문 앞에
또는
를 입력해서 xml 결과값이 올바르게 반환되는지 한번 확인해보시겠어요? 아마 결과값이 올바르지 않거나 xml 반환된 값 중 totlacount <- 항목이 없어서 그럴 수 있습니다.
한번 확인해보세요 :)
<response><header><resultcode>99</resultcode><resultmsg>SERVICE KEY IS NOT REGISTERED ERROR.</resultmsg></header></response>
위처럼 나옵니다.
<header>
<resultCode>99</resultCode>
<resultMsg>SERVICE KEY IS NOT REGISTERED ERROR.</resultMsg>
</header>
</response>
API 일반인증키 활성화 시간이 따로 있나요?
저녁 10시부터 들으면서 예제파일로 따라 하는데
url 만들때 인터넷 주소창에 붙여넣으면
저런 메세지가 뜨는 창이 나옵니다.
인증키는 24시간 사용가능한 것으로 알고 있습니다.
위 메시지는 작성한 인증키가 등록되지 않은 잘못된 인증키여서 발생하는 오류로 보입니다.
작성한 코드를 한번 더 다시 확인해보세요.
'■■■■■■■■■■■■■■■■■■■■■■
'실제 코드는 10줄 내외로 아주 간단히 API 요청 및 데이터를 추출할 수 있습니다!
'■■■■■■■■■■■■■■■■■■■■■■
'▶ 주요 명령문
'GetHTTP : HTTP 요청으로 웹 데이터를 파싱합니다.
'ParseXML : XML 데이터에서 원하는 값을 추출합니다.
'ArrayToRng : 배열을 시트 위에 뿌립니다.
'① 변수 선언하기
'URL : API를 요청할 전체 URL주소
'ServiceKey : API키
'AreaCode: 조회할 지역의 5자리 법정동코드
'YMCode : 년/월로 구성된 6자리 숫자 (YYYYMM)
'numOfRows : 출력할 데이터 수
'xmlResult : API로 반환된 XML 데이터
'total : 검색된 결과 수
'vResult : 출력할 데이터
Dim URL As String
Dim ServiceKey As String
Dim AreaCode As String
Dim YMCode As String
Dim numOFRows As String
Dim xmlResult As String
Dim total As Long
Dim vResult As Variant
ServiceKey = "6pQFcdjkCW0oD7SIMl3DvJ1bQbzx%2FdBAAVwm3nFkdvo3fGzVQHTMT9fTJk07qE%2FeSEFpzOG48lvvKl9nrhEkqA%3D%3D"
AreaCode = Sheet2.Range("B4").Value
YMCode = Sheet2.Range("B3").Value
numOFRows = Sheet2.Range("B5").Value
'② URL 주소 만들기 (쿼리 문자열 포함)
URL = "http://openapi.molit.go.kr/OpenAPI_ToolInstallPackage/service/rest/RTMSOBJSvc/getRTMSDataSvcAptTradeDev?"
URL = URL & "ServiceKey=" & ServiceKey
URL = URL & "&LAWD_CD=" & AreaCode
URL = URL & "&DEAL_YWD=" & YMCode
URL = URL & "&numOFRows=" & numOFRows
Sheet2.Range("A7").Value = URL
MsgBox URL
'③ API 데이터 받아오기
xmlResult = GetHttp(URL).body.innerhtml
'④ 원하는 정보 파싱하기
total = ParseXML(xmlResult, "totalcount", , True)
'⑤ 데이터 출력 후 종료
vResult = ParseXML(xmlResult, "items,item", "년,월,일,법정동,도로명,건축년도,아파트,거래금액")
Sheet2.Range("A8").CurrentRegion.ClearContents
ArrayToRng Sheet2.Range("A8"), vResult
End Sub
-------------------------
눈알 빠지게 찾아봐도ㅠㅠ 오빠두님 따라서 잘 한거같아요 ㅠ 오탈자도 없는 것 같고..
인증키도 일반인증키 인코딩용 복붙한거라 ㅠ.. msgbox url 해서 실행하면
런타임 오류 94가 뜨는데.. 어떻게 해야 할까요
<response>
<header>
<resultCode>00</resultCode>
<resultMsg>NORMAL SERVICE.</resultMsg>
</header>
<body>
<items/>
<numOfRows>10</numOfRows>
<pageNo>1</pageNo>
<totalCount>0</totalCount>
</body>
</response>
이젠 노말 서비스라는데..흠;; 모르겠어요 ㅠㅠ
유튜브 영상 댓글에 완성파일이 있습니다.
완성파일을 참고해서 파일을 다시 실행해보세요.
아마 잘 동작할겁니다.
실거래가 조회 눌렀을 때
런타임오류 94 뜨는건..뭘까요 ㅠ
아래 2가지를 체크해보세요.
① 윈도우 검색창에 'Windows 기능 켜기/끄기'를 실행한 후, "Net Framework 3.5(.Net2.0 및 3.0 포함)이 체크되어 있는지 확인 -> 미체크시 체크하여 설치한 후, PC 재부팅
② 제어판 이동 -> 오른쪽 상단 보기기준 [큰 아이콘] 변경 -> 네트워크 및 공유센터 이동 -> 왼쪽아래 [인터넷 옵션] 클릭 -> [고급] 탭 클릭 -> 스크롤 내리면 중간에 [TLS 1.2 사용] 체크 -> [적용] 클릭 후, PC 재부팅
위 2가지 내용을 확인 해보시길 바랍니다.^^
완성파일로 확인해보니
제 지역이 경기도 성남인데
다른 지역 하남, 구로, 이런쪽은 되는데
성남만! 런타임 94 오류가 발생하고
디버그 눌러서 보니
total = ParseXML(xmlResult, "totalcount", , True)
이 부분에 노란색이 되어 있습니다 ㅠㅠ!
어떤 부분이 문제일까요??
영상 후반부 "지방 아파트 매매 실거래가 조회" 부분을 확인해보시길 바랍니다.
`91런타임오류 / 개체변수또는 WITH문의 변수가 설정되어있지 않다고 나옵니다.
아래 코드에 디버그 노란부분이 표시되는데, 어떻게 해결해야할까요?
For Each xEntry In xResult.ChildNodes
해당 For Each 문 앞에 Stop을 작성하여 중단한 후,
[보기] - [지역창] 에서 xResult 개체가 어떻게 만들어지는지 확인해보시길 바랍니다.
감사합니다.
이 api자료를 유튜브강의 완성파일에 적용시키려고 하는건데 계속 변수오류가나옵니다.
xResult 개체는 어떤걸 확인해봐야 할지를 모르겠어서 다시한번 질문 남깁니다.
STOP 작성 후, 코드를 디버깅(xResult 개체 값을 확인)하는 방법은 아래 링크를 확인해보시길 바랍니다.
https://www.oppadu.com/%EC%97%91%EC%85%80-vba-%EB%94%94%EB%B2%84%EA%B9%85/
예상되는 문제로 LAWD_CD의 지역번호가 잘못되었거나, API키가 잘못되어서 그럴 수 있으니 여러 변수를 고려하여 문제를 해결해보세요.
제시해드린 답변이 문제를 해결하시는데 도움이 되었길 바랍니다. 감사합니다.
도와주세용~~^^
참, 결혼 축하드립니다~~^^
실습파일 및 완성파일은 좌측 '영상 댓글을 통해서만 제공' 링크를 클릭하시거나 위 영상을 클릭하셔서 유튜브 페이지로 이동 후, 댓글에서 확인하실 수 있습니다. :)
또는 아래 링크를 클릭해서 확인해보세요.
https://www.youtube.com/watch?v=LU56BDekxME
감사합니다.