[엑셀vba] 인터넷 익스플로러 컨트롤하기 2(자동로그인)
[엑셀vba] 인터넷 익스플로러 컨트롤하기 3(웹 크롤링)
지금은 알고 있지만 시간이 지나면 까먹게 된다.
그런 일이 발생하지 않도록 기록을 남긴다.
1. 준비
엑셀 2010을 연다.
비주얼 베이직 에디터(알트+F11) -> 도구 -> 참조
* Microsoft HTML Object Library
* Microsoft Internet Controls
* Microsoft XML, v6.0
위 세 가지 항목을 참조에서 찾은 다음 추가한다.
(추가는 이름 앞 네모칸에 체크)
준비 끝.
2. 인터넷 익스플로러 열기
Sub 인터넷익스플로러열어보기()
Dim 인터넷 As InternetExplorer
Set 인터넷 = New InternetExplorer
인터넷.Silent = True
인터넷.Visible = True
인터넷.navigate "www.boannews.com"
End Sub
인터넷.silent = True :인터넷 열었을 때 뜨는 경고 메시지나 메시지 상자들을 안 띄워줌
인터넷.Visible = True :매크로 실행했을 때 인터넷 창 띄울 건지 설정, false = 안 띄어줌
인터넷.navigate "www.boannews.com" : ""안에 적힌 URL 주소로 이동
Set 인터넷 = New InternetExplorer : 뭔지 잘 모르는데 없으면 오류남. 컴퓨터한테 함수 자리 준비해놔라 이런 느낌 같음
위 코드대로 실행하면 바로 보안뉴스 홈페이지가 나옴
3. 페이지 로딩
이게 참 중요한 게 페이지 로딩이 다될때까지 기다리지 않으면 매크로가 제대로 동작하지 않게 됨
예시)
페이지 이동 후 로딩된 페이지의 html 태그를 불러오는 코드가 있음을 가정함.
1) 웹 페이지 이동 함
2) 로딩 시간 1.5초 걸림
3) 로딩 중인데 매크로는 걍 진행
4) html 태그 불러와서 변수에 담아야되는데 변수에는 Empty. 빈상태가됨
결론. 페이지 로딩이 다될때까지 기다린다음 매크로가 진행되어야 한다.
그래서 참 중요하다.
본인은 오빠두 엑셀 선생님한테 배운 걸로 잘 쓰고 있음
감사합니다 센세
Sub Wait_Browser(Browser As InternetExplorer, Optional t As Integer = 1)
While Browser.Busy Or Browser.readyState <> 4
DoEvents
Wend
Application.Wait DateAdd("s", t, Now)
End Sub
위 코드는 페이지 로딩 끝날때까지 기다림
모듈을 새로 추가하여 코드를 붙여 넣고 쓰면 됨
Test.
Sub 인터넷익스플로러열어보기()
Dim 인터넷 As InternetExplorer
Set 인터넷 = New InternetExplorer
인터넷.Silent = True '익스플로러에서 경고팝업, 메세지 상자같은거 안뜨게 해줌
인터넷.Visible = True 'true = 익스플로러창 보임, false = 안보임
인터넷.navigate "www.boannews.com" '이동할 주소
Wait_Browser 인터넷
인터넷.navigate "www.naver.com" '이동할 주소
End Sub
위 코드를 실행하면 보안뉴스 페이지 로딩이 끝나면 네이버로 넘어감을 알 수 있다.
하지만 "Wait_Browser 인터넷"을 주석 처리하고 매크로를 실행하면 네이버가 나타난다.
'컴퓨터 공부 > 엑셀 & VBA' 카테고리의 다른 글
[엑셀vba] 파워포인트 제어하기 (0) | 2020.08.27 |
---|---|
[엑셀vba] 내가 만든 매크로 추가 기능에 추가하기 (0) | 2020.07.23 |
[엑셀vba] 인터넷 익스플로러 컨트롤하기 4(이미지 다운로드) (0) | 2020.07.04 |
[엑셀vba] 인터넷 익스플로러 컨트롤하기 3(웹 크롤링) (1) | 2020.06.24 |
[엑셀vba] 인터넷 익스플로러 컨트롤하기 2(자동로그인) (0) | 2020.06.15 |