PPT와 VBA를 이용한 실시간 주식 시세 모니터링 프로그램입니다.
다음 파이낸스의 코스피 상위 25종목 의 시세를 가져와서 보여주는 프로그램입니다.
사실 저는 주식의 '주'자도 모르지만
의 자료를 간단히(?) 테이블로 가져와서 5개씩 5페이지에 걸쳐
화면전환과 에니메이션을 약간 섞어서 화면에 뿌려줍니다.
캡쳐영상(빠른 속도)
특히 일반적인 Split 을 이용한 파싱이 아니라
MSHTML 라이브러리를 이용해서 WinHTTP로 받아온 HTML속에서
<TR>와 <TD>을 배열로 가져와서 간단히(?) 처리합니다.
그러기 위해서 Alt-F11 눌러서 매크로편집기상에서 메뉴에 도구-참조에서
Microsoft Internet controls 와 Microsoft Winhttp Service 5.1,
Microsoft HTML Object 라이브러리를 체크해주셔야 사용이 가능합니다.
StockMonitor.pptm 과 애니메이션이 추가된 StockMonitorA.pptm 두가지 버전입니다.
핵심적인 GetData 루틴입니다.
Sub GetData()
각종 변수 선언... 생략
Set winHttpReq = CreateObject("WinHttp.WinHttpRequest.5.1") '인터넷 오브젝트 생성
myURL = "http://finance.daum.net/quote/rise.daum" ' 주소
winHttpReq.Open "GET", myURL, False ' get방식으로 소켓을 열어서
winHttpReq.Send ' 송신
result = winHttpReq.responseText ' 받은 결과 수신
'도구 메뉴 -참조 - Microsoft HTML Object Library 체크!!
Dim myHTML As New MSHTML.HTMLDocument 'HTML tag, id등을 이용한 추출을 위해 MSHTML 라이브러리를 이용
Dim td As MSHTML.IHTMLElementCollection ' 모든 <td> 배열
Dim tr As MSHTML.IHTMLElementCollection ' 모든 <tr> 배열
Dim trObj As MSHTML.HTMLGenericElement ' 각 <tr> 하나
Dim tdObj As MSHTML.HTMLGenericElement ' 각 <td> 하나
Dim count As Integer, i As Integer
Dim str As String
count = 0
'느린 Internet Explorer 오브젝트를 이용하기보다 Winhttp 로 html을 그대로 긁어 온 다음
' 읽어온 HTML 내용을 Tag나 id로 가져오기 위해 MSHTML 라이브러리를 이용. 우선 MSHTML 도큐먼트에 결과 html내용을 넣어줌.
myHTML.body.innerHTML = result 'MSHTML을 이용하기 위해 URL접속 결과을 강제로 넣어줌
Set tr = myHTML.getElementsByTagName("tr") '모든 <tr> 을 찾아서
For Each trObj In tr ' 그 안의 각각의 <tr>에서
count = count + 1 '카운트 증가
i = 0
ReDim Preserve myData(1 To 8, 1 To count) '주가를 담을 배열을 1개 증가 (2차원 배열)
Set td = trObj.getElementsByTagName("td") ' 각각의 <tr> 안에서 모든 <td>를 찾아
If td.Length = 8 Then ' 8칸짜리 td이면 (8칸: 순위,종목명,현재가,전일비,등락률,거래량,거래대금(백만),52주고가)
For Each tdObj In td '그중 각각의 <td>가
i = i + 1 '인덱스 증가
If count < 26 Then myData(i, count) = tdObj.innerText '각각의 <td>안의 문자열을 저장: <td> 파포전자<td> => "파포전자"
' 5페이지 * 5 개만
Next
Else
count = count - 1
End If
Next
..나머지 생략...
....
End Sub
다른 웹사이트의 각종 자료도 이렇게 가져올 수 있겠습니다.
Split 으로 데이타 파싱하신 분들 이 방법도 이용해보세요.
이 글은 http://cafe.naver.com/gameppt/123090 에도 게재되었습니다.
'PPT+VBA' 카테고리의 다른 글
구글번역을 이용한 PPT 슬라이드 자동 번역 (14) | 2018.06.20 |
---|---|
영화엔딩크레딧 효과 (0) | 2018.03.31 |
자동 달력 생성기 (1년치 달력 추가) (1) | 2017.01.12 |
FileSize함수를 이용해 폴더내의 파일 목록을 표시하자 (0) | 2017.01.12 |
네이버 카페 최신글 가져오기(모니터링) (0) | 2017.01.12 |
이진법을 이용한 숫자맞추기 마술 (4) | 2016.09.26 |
text file 문장단위로 슬라이드 생성하기 (0) | 2016.05.20 |
Text2Slide 텍스트 파일속 문장을 자동으로 슬라이드로 만들기 (7) | 2016.05.19 |
최근댓글