최근 엑셀을 이용해서 주식 계좌 정리 파일을 만들 일이 생겨 간단히 기록하고자 합니다.
만든 프로젝트는 단순합니다.
- 구매한 개별 종목명과 종목코드 입력
- 매수한 수량과 매수단가 입력
- 버튼 클릭 시, 현재가격을 가져와 자동으로 평가금액 및 수익률 등 계산
대체로 엑셀의 기본기능을 사용하면 가볍게 구현할 수 있는 계좌 정리 방안입니다만, 주식의 현재 가격을 불러오는 것은 매크로를 이용해야 했습니다.
엑셀 매크로를 이용해서 각 개별 종목들의 현재가격을 웹에서 스크랩핑해오는 과정입니다.
엑셀 VBA 참조도구에 HTTP 관련내용 추가
다음 스크린샷과 같이 도구-참조에서 항목 추가해야합니다.

다음 코드를 입력합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | Sub main() For row = 5 To 100 Set Value = Sheets("Sheet1").Cells(row, 4) If Not IsEmpty(Value) Then Call crawling(Value, row) End If Next row End Sub Sub crawling(num, row) Set explorer = CreateObject("InternetExplorer.Application") Url = "https://finance.naver.com/item/main.nhn?code=" & num With explorer .Visible = False .Navigate2 Url End With While explorer.readyState <> READYSTATE_COMPLETE Or explorer.Busy = True DoEvents Application.Wait (Now + TimeValue("0:00:01")) Wend Application.Wait (Now + TimeValue("0:00:01")) Dim document As HTMLElementCollection Set document = explorer.document For Each element In document.getElementsByClassName("no_today") Sheets("Sheet1").Cells(row, 7) = element.innerText Next element End Sub | cs |
main함수는 말그대로 엑셀에서 버튼 클릭 시 실행되는 함수입니다. 종목코드가 입력된 row, 즉 행을 따라 value를 읽어오고, 각 value를
Crawling함수의 인자로 넣어줍니다.crawling에서는 거의 복붙 수준의 코드입니다. 네이버 finance의 종목을 보면, 주소에 종목 코드가 들어가 있는데, main에서 넘겨온 value를 주소에 포함시켜서 호출하는 형태입니다. 호출한 뒤, 현재가격에 해당하는 클래스를 읽어들여 각 종목 별 현재가 위치에 붙여넣습니다.
아래와 같이 구성되었습니다.

댓글