VBA 웹크롤링 다운로드 팝업창 열기/저장/취소 선택 방법

VBA
작성자
묵비권
작성일
2020-10-26 14:32
조회
1311

Dim IE As Object
Set IE = CreateObject("internetexplorer.application")

IE.Visible = False

IE.Navigate "https://www.cardsales.or.kr/signin"

While IE.Busy Or IE.ReadyState <> 4
DoEvents
Wend

With IE.document.All
.Item("j_username").Value = "아이디"
.Item("j_password").Value = "비밀번호"
.Item("goLogin").Click
End With

While IE.Busy Or IE.ReadyState <> 4
DoEvents
Wend

IE.Navigate "https://www.cardsales.or.kr/page/purchase/term"

While IE.Busy Or IE.ReadyState <> 4
DoEvents
Wend

IE.document.All.Item("searchStrDate").Value = "2020-10-01"
IE.document.All.Item("searchEndDate").Value = "2020-10-02"
IE.document.All.Item("searchBtn").Click

While IE.Busy Or IE.ReadyState <> 4
DoEvents
Wend

For i = 0 To 1
IE.document.All.Item("chk" & i).Click
Next

Call IE.document.parentWindow.execScript("searchList('Detail');;", "javascript") '상세내역 조회

While IE.Busy Or IE.ReadyState <> 4
DoEvents
Wend

Call IE.document.parentWindow.execScript("searchList('Excel');;", "javascript") '엑셀 내려받기

While IE.Busy Or IE.ReadyState <> 4
DoEvents
Wend

Application.SendKeys "%{o}" '다운로드 상태창 열기 선택

유튜브롤 통해 웹 크롤링 강좌를 보고 여신금융협회 자료를 가져오려고 시도중입니다.

다른 부분은 어떤 형태로든 구현을 했는데 마지막 조회된 내용을 엑셀로 변경해서

다운로드 하는 부분이 문제입니다.

 

다른 선택버튼은 IE에서 소스보기를 통해 버튼명을 알아내서 클릭을 해서 처리를 했는데

마지막 다운로드 창에서 열기 / 저장 / 취소 버튼은 어떻게 처리를 해야 될지 궁금합니다.

현재는 Application.SendKeys "%{o}" 를 통해 파일을 열고 있습니다.

 

그리고...이 경우 Application.SendKeys "%{o}"  바로 위 코드인

While IE.Busy Or IE.ReadyState <> 4
DoEvents
Wend

 

은 다른 부분에서 사용한 것과 달리 정상적으로 작동하지 않는 것 같습니다.

만약 제대로 작동하지 않는 것이 맞다면 다운로드 팝업창이 열린걸 확인하고

Application.SendKeys "%{o}"  처리를 할려면 어떻게 해야 될까요?

 

조회된 내용을 텍스트 형태로 개체에 담아서 SPLIT 처리를 할 방법도 있을까요?

크롬에서는 소스보기를 하면 보이던데 IE에서는 소스보기를 해도 조회된 내용을

찾을 수가 없네요.

 

감사합니다.

회원등급 : 새싹등급
포인트 : 120 EP
총질문 : 2 개 (마감율 : 50%)
채택답변 : 1 개
전체 3

  • 2020-10-26 22:12
    채택된 답변

    안녕하세요.

    인터넷 익스플로러에서 팝업되는 '저장하기' 창은 VBA의 IE 라이브러리만으로는 제어가 불가능합니다. 따라서 Win32 API의 FindWidnow 함수로, 저장하기 창이 팝업되었는지 확인 한 뒤, 팝업창이 열렸으면 SendMessage 함수로 엔터키를 팝업창에 전달하는 방식으로 접근하셔야 합니다.

    Win32 API를 사용하는 방법에 대한 자세한 내용은 이전 엑셀x카카오톡 라이브 강의에서 설명해드렸으니 아래 링크를 확인하면 많은 도움이 되실겁니다.

    엑셀 x 카카오톡 문자보내기 자동화 프로그램 :: 엑셀 Live 11강

    또는 아래 StackOverFlow 관련 링크를 적어드리니 확인해보세요 ^^

    https://stackoverflow.com/questions/54133068/how-to-press-save-on-internet-explorer-popup

    조회된 내용을 텍스트 형태로 개체에 담아서 SPLIT 처리 한다는게 정확히 어떤 것을 원하시는지 모르겠으나, 크롬과 IE 모두 동일하게 소스보기를 제공합니다.

    만약 해당 페이지의 HTML 을 다운받고자 하시는 거라면, HTML Doc 개체를 생성하신 뒤, .responseText 속성으로 해당 페이지의 HTML를 받아오실 수 있습니다.

    관련 내용은 아래 영상강의를 참고해보세요.

    엑셀 VBA 크롤링 총정리 :: 네이버 뉴스 읽어오기 매크로

    답변이 도움이 되셨길 바랍니다.^^ 감사합니다.


    • 2020-10-29 11:18

      감사합니다. FindWindow 명령어 선언과 사용법이 잘 이해가 안되서 고생했지만...

      원하는 기능 잘 구현했습니다.

       

      그런데 혹시...

       

      다운로드 창이 열려 있는 건 FindwindowEx 명령어로 IE HWND를 통해 확인을 할 수있는데

      다운로드가 완료되었는지 확인후 파일열기를 할려고 한다면 확인 할 수 있는 방법이 있을까요?


전체 4,290
번호 카테고리 제목 작성자 작성일 추천 조회
4273 함수/공식
New 결제건수에서 중복이름 제거한 뒤 인원수표기 첨부파일
드래군 | 18:37 | 추천 0 | 조회 8
드래군 18:37 0 8
4272 VBA
New WORKBOOK_OPEN 에 두 가지 모듈 입력하는 법...
tu1541 | 17:58 | 추천 0 | 조회 7
tu1541 17:58 0 7
4271 함수/공식
New 중복 문자 제거후 정렬 방법 첨부파일
붉은머리샹크스 | 17:49 | 추천 0 | 조회 7
붉은머리샹크스 17:49 0 7
4270 함수/공식
New 몇일을 고민하다 이렇게 도움을 구합니다. (예제파일 첨부드렸습니다. 첨부파일 (1)
JS_SHIN | 17:42 | 추천 0 | 조회 14
JS_SHIN 17:42 0 14
4269 VBA
New VBA for문에 다른시트 vlookup 하기! 질문입니다!
mir**** | 17:38 | 추천 0 | 조회 6
mir**** 17:38 0 6
4268 함수/공식
New 2개의 시트에 데이터 동시 입력 (2)
홍병주 | 16:25 | 추천 0 | 조회 22
홍병주 16:25 0 22
4267 함수/공식
New 가격 평균을 구하고 싶습니다. 첨부파일 (2)
워싱턴 | 15:17 | 추천 1 | 조회 23
워싱턴 15:17 1 23
4266 VBA
New 기능 추가 관련 질문입니다. (1)
노랑토끼 | 14:03 | 추천 0 | 조회 16
노랑토끼 14:03 0 16
4265 차트/그래프
New 동적차트 문제가 생겼어요 첨부파일 (2)
두찌아빠 | 12:38 | 추천 0 | 조회 18
두찌아빠 12:38 0 18
4264 함수/공식
New 원하는 범위만 지정해서 정렬하는게 가능할까요? 첨부파일 (2)
롤로랄라 | 11:48 | 추천 0 | 조회 21
롤로랄라 11:48 0 21
4263 함수/공식
New 중복제거 인원수 첨부파일 (4)
드래군 | 11:25 | 추천 1 | 조회 23
드래군 11:25 1 23
4262 함수/공식
New B시트에 있는 값을 A 시트에 불러오는 함수 알려주실 수 있나요....(예제파일 있음) 첨부파일 (5)
이주 | 08:56 | 추천 0 | 조회 33
이주 08:56 0 33
4261 함수/공식
New 도와주세요~ 두가지 질문입니다ㅠㅠ 첨부파일 (2)
엑셀왕초보 | 02:33 | 추천 0 | 조회 24
엑셀왕초보 02:33 0 24
4260 VBA
New 재고관리폼을 이용하여 LOT로 제품을 등록하고싶습니다. 첨부파일
가을전어 | 00:20 | 추천 0 | 조회 21
가을전어 00:20 0 21
4259 함수/공식
New 엑셀 배열 조건 합계 수식 관련해서 도와주세요 첨부파일 (1)
OoooPs | 2021.10.25 | 추천 0 | 조회 31
OoooPs 2021.10.25 0 31
함수/공식
New Re:엑셀 배열 조건 합계 수식 관련해서 도와주세요 (1)
Yukon | 2021.10.25 | 추천 0 | 조회 28
Yukon 2021.10.25 0 28
4258 함수/공식
New 함수값 표시방법 문의드려요~ 첨부파일 (4) 답변완료
바람투유 | 2021.10.25 | 추천 0 | 조회 25
바람투유 2021.10.25 0 25
4257 VBA
New ms 365 쓰시는분 계신가요? 사내 엑셀 동기화 + vba 관련 (3) 답변완료
백일호 | 2021.10.25 | 추천 1 | 조회 34
백일호 2021.10.25 1 34
4256 VBA
New 도와주세요 ㅠㅠ어떻게해야될까요 (1)
dud**** | 2021.10.25 | 추천 0 | 조회 36
dud**** 2021.10.25 0 36
4255 문서서식
New 사용자 지정서식 관련하여 앞에 문자 고정으로 하고, 뒤에 숫자 입력후 " -00"등을 붙이면 앞의고정 문자가 사라지지 않는 방법 (2) 답변완료
아빠의꿈 | 2021.10.25 | 추천 0 | 조회 24
아빠의꿈 2021.10.25 0 24
4254 함수/공식
New indirect 함수 관련 질문 입니다 해결방법좀 가르쳐주세요 (4)
밍장군 | 2021.10.25 | 추천 0 | 조회 28
밍장군 2021.10.25 0 28
4253 VBA
New QR바코드 한글작성 및 내용추가편집기능
H.B | 2021.10.25 | 추천 1 | 조회 18
H.B 2021.10.25 1 18
4252 VBA
New 크롤링 실행이 안되는 문제가 있습니다 (1)
미르르르르르르르릉 | 2021.10.25 | 추천 0 | 조회 20
미르르르르르르르릉 2021.10.25 0 20
4251 VBA
New 재고관리 VBA 강의 중 Insert_Record에 관해서 문의드립니다. (1)
올마이타 | 2021.10.25 | 추천 0 | 조회 26
올마이타 2021.10.25 0 26
4250 차트/그래프
New 일주일, 24시간 단위의 차트를 만드는 방법을 알고 싶습니다. 첨부파일 (2)
겨울 | 2021.10.25 | 추천 -1 | 조회 29
겨울 2021.10.25 -1 29
4249 함수/공식
New 동적범위 차트설정에 문제가 생겼어요~ (2) 답변완료
두찌아빠 | 2021.10.24 | 추천 0 | 조회 26
두찌아빠 2021.10.24 0 26
4248 VBA
New VBA로 DATA받는 셀 분할 가능할까요..? (2)
너스 | 2021.10.24 | 추천 0 | 조회 36
너스 2021.10.24 0 36
4247 함수/공식
New 엑셀 특정행만 중복제거 첨부파일 (5)
한성우 | 2021.10.24 | 추천 0 | 조회 64
한성우 2021.10.24 0 64
4246 파워쿼리/피벗
New 파워쿼리에서 원본데이터 수정 할 수 있는 방법이 있나요? (2)
월마리아 | 2021.10.24 | 추천 0 | 조회 32
월마리아 2021.10.24 0 32
4245 VBA
품목별 주문관리 시트 첨부파일 (2)
몽쉘 | 2021.10.23 | 추천 0 | 조회 62
몽쉘 2021.10.23 0 62
4244 함수/공식
raw 데이터를 이용하여 복수 조건에 해당하는 데이터 나열하기 문의 (5)
신동 | 2021.10.22 | 추천 0 | 조회 77
신동 2021.10.22 0 77