[네이버로그인유저폼] 브라우저 설정하기
엑셀 매크로로 인터넷 브라우저를 동작하는 방법! - IE.Browser 설정법
이 강의에서는 엑셀 VBA로 웹페이지를 자동화할 때 사용하는 WinHTTP(MSXMLHTTP) 와 인터넷 익스플로러 제어 방식의 차이를 비교하고, 각각의 활용 상황을 정리합니다. 함께 Wait_Browser 보조 명령문과 F12 개발자 도구로 HTML 의 ID·Class·Type 속성을 분석하는 방법을 다루어, 네이버 자동로그인 자동화의 기초를 다집니다.
실습 가이드
| 엑셀 VBA로 만드는 네이버 자동로그인 프로그램 #3 | 오빠두엑셀 VBA 강의 2-3
1. VBA로 인터넷 접근 및 웹페이지 정보수집하는 방법
엑셀 VBA에서 웹페이지나 웹문서에 접근해 정보를 수정하거나 데이터를 수집할 때는 일반적으로 두 가지 방법을 사용합니다.
1-A. WinHTTP (또는 MSXMLHTTP) 이용
VBA는 WinHTTP 또는 MSXMLHTTP 를 통해 웹문서와 웹페이지의 데이터를 수집하고 편집할 수 있는 기능을 제공합니다.
VBA에서는 자체 XML 라이브러리를 참조 추가해 Early Binding 으로 사용하거나, CreateObject 명령문으로 MSXML2 의 XMLHTTP 개체를 호출해 Late Binding 으로 사용할 수 있습니다. WinHTTP 와 XMLHTTP 는 주로 VBA 로 웹파싱(Web Parsing, 웹페이지에서 데이터를 추출하는 작업) 을 수행할 때 활용합니다.

[링크] 웹파싱에 대한 위키(영문) 내용 참조
https://en.wikipedia.org/wiki/Web_scraping
1-B. Early Binding(정적 바인딩)과 Late Binding(동적 바인딩)의 차이점
코딩이 익숙하지 않은 분들을 위해 Early Binding(정적 바인딩) 과 Late Binding(동적 바인딩) 의 차이를 간략히 정리합니다.
다만 Late Binding 은 VBA 가 각 개체의 속성값을 자동 완성으로 안내해주지 않아 코드 작성 난이도가 올라가고, Early Binding 에 비해 안정성이 떨어진다는 단점이 있습니다. 따라서 VBA 가 기본으로 제공하는 Reference 를 사용할 수 있는 경우라면 Early Binding 을 우선 권장합니다.
1-C. IE (Internet Explorer) 이용
VBA 에서는 Internet Explorer 를 직접 제어해, 사용자가 브라우저를 사용하는 것처럼 거의 모든 웹문서와 웹페이지의 정보를 편집·수정할 수 있는 자동화 도구를 만들 수 있습니다.
XMLHTTP 는 추가 로그인이 필요하거나 페이지 보안 정책으로 접근이 제한되는 경우가 많아, API 키를 별도로 발급받아야 하거나 아예 접근 시도조차 어려운 상황이 발생하기도 합니다. 반면 IE 를 활용하면 키보드와 마우스 동작을 시간 흐름에 맞춰 직접 제어할 수 있어, 대부분의 웹문서와 웹페이지에 접근해 데이터를 수집할 수 있습니다.
다만 IE 로 웹페이지를 제어할 경우, XMLHTTP 에 비해 메모리 소모가 많고 동작 속도가 느리다는 단점이 있습니다.

2. Wait_Browser (IE 컨트롤을 위한 보조명령문 작성)
VBA 에서 IE 로 웹문서나 웹페이지를 제어할 때 가장 주의해야 할 부분은, 실행 중인 인터넷 익스플로러가 '사용할 준비가 완료될 때' 까지 기다리는 것입니다. 즉 웹문서 로딩이 끝나고 다음 동작을 받을 수 있는 상태가 된 이후에 다음 명령을 실행해야 안정적으로 동작합니다. 이를 위해 Wait_Browser 라는 보조 명령문을 다음과 같이 작성합니다.
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
2-A. Browser.REDAYSTATE에 대한 이해
VBA 가 판단하는 인터넷 익스플로러의 준비 상태는 총 5단계로 구분됩니다. 실제 코드에서 활용하는 준비 상태는 4번, 즉 모든 데이터를 사용할 수 있는 준비 완료 상태이며, Browser.Busy(로딩 중 또는 실행 중) 상태와 함께 조합해 인터넷 익스플로러가 다음 동작을 받을 준비가 끝났는지 판단합니다.
• READYSTATE_LOADING(1) : 브라우저 로딩 중
• READYSTATE_LOADED(2) : 브라우저 초기화 완료
• READYSTATE_INTERACTIVE(3) : 브라우저 응답 가능, 일부 데이터 사용 불가
• READYSTATE_COMPLETE(4) : 모든 데이터 사용 가능 상태
2-B. Application.Wait 속성에 대해 알아보기
Application(엑셀 프로그램) 의 Wait 속성을 활용하면 지정한 시간까지 코드 실행을 일시 정지하고 대기시킬 수 있습니다.
■ 사용법 : Application.Wait [Variant(Time)/시간]
■ 출력값 : Boolean (참/거짓)
'Application.Wait 속성 사용예제 > '## 현재시간에서 5초가 뒤의 시간까지 기다립니다. ## Application.Wait Now() + TimeValue("0:00:05")
[링크] Application.Wait 속성에 대해 자세히 알아보기
https://msdn.microsoft.com/en-us/vba/excel-vba/articles/application-wait-method-excel
2-C. DateAdd 함수 사용법에 대해 알아보기
DateAdd 함수는 VBA 내장 함수입니다. 변수로 지정한 기준 시간에 입력한 단위·값만큼의 차이를 더해, 그 결과를 Variant(Date) 형식으로 반환합니다.
■ 출력값 : Variant(Date)
■ 단위의 종류 :
| 속성 | 설명 |
| yyyy | 년 |
| q | 분기 |
| m | 달 |
| d | 일(주말포함) |
| w | 평일 |
| ww | 주 |
| h | 시간 |
| n | 분 |
| s | 초 |
'DateAdd 함수 사용예제> '## 현재시간기준 1분 뒤의값을 출력합니다. DateAdd("n",1,Now()) '## 금일 기준으로, 3일 뒤의 값을 출력합니다. DateAdd("d", 3, Date())
[링크] DateAdd 함수에 대해 자세히 알아보기
https://msdn.microsoft.com/en-us/vba/language-reference-vba/articles/dateadd-function
3. 인터넷 익스플로러를 200% 활용하기 위한 HTML 활용법
엑셀 VBA 로 인터넷 익스플로러를 활용할 때 HTML 언어에 대한 기초적인 이해가 있다면 자동화의 효율을 크게 끌어올릴 수 있습니다. HTML 문법을 깊이 알고 있지 않더라도, 제어하려는 웹페이지의 HTML 구성과 흐름만 파악할 수 있다면 VBA 로 인터넷 익스플로러에 손쉽게 접근할 수 있습니다.
대부분의 웹 브라우저(Internet Explorer, Chrome, Firefox 등)는 브라우저를 실행한 상태에서 F12 키를 누르면 개발자 도구가 열리며, 개발자 도구를 통해 현재 표시 중인 웹페이지의 HTML 구조를 손쉽게 분석할 수 있습니다. 이번 강의에서는 그 사용 방법을 함께 정리합니다.
3-A. 브라우저에서 개발자도구 실행 및 성분분석도구 선택
실행 중인 브라우저에서 F12 키를 눌러 개발자 도구를 실행합니다.

개발자 도구가 실행되면 좌측 상단(크롬 기준)에 위치한 요소 선택(성분 분석) 도구를 클릭합니다. 이후 마우스 커서를 분석하려는 위치로 이동하면 해당 컨트롤에 적용된 HTML 코드가 표시되고, 이를 기준으로 VBA 에서 인터넷 익스플로러를 제어할 수 있습니다.

3-B. VBA와 인터넷 익스플로러 연동을 위해 반드시 짚고 넘어가야 할 속성 3가지
앞서 살펴본 것처럼, VBA 로 웹페이지를 연동·제어하거나 데이터를 수집할 때는 WinHTTP(또는 MSXMLHTTP) 를 활용하거나 IE(인터넷 익스플로러) 를 활용하는 두 가지 방법이 있습니다.
이 중 인터넷 익스플로러를 VBA 와 연동하는 경우는 보통 사용자가 웹페이지 위에서 추가적인 동작을 수행해야 할 때 활용합니다. VBA 와 인터넷 익스플로러를 연동할 때는 대상 웹페이지의 HTML 코드에서 다음 세 가지 속성만 확인하면, 이후 단계에서 손쉽게 각 요소를 제어할 수 있습니다.
1. ID 속성: 각 요소를 구분하는 고유 값입니다. 제어하려는 요소가 'ID' 값을 가지고 있다면, 이후 강의에서 다룰 .GetElementByID 함수로 손쉽게 접근할 수 있습니다.

2. Class 속성: 제어하려는 요소가 'ID' 값으로 구분되지 않는 경우, Class 속성으로 1차 분류를 진행합니다. 마찬가지로 이후 강의에서 다룰 .GetElementByClassName 함수로 처리할 수 있습니다.
3. Type 속성: Class 속성으로 1차 분류된 그룹 안에서, Type 속성이 특정 값인 요소를 추출하면 웹페이지의 원하는 항목을 정확하게 제어할 수 있습니다. (대부분의 웹문서는 Class 와 Type 속성만 조합해도 원하는 요소를 추출할 수 있습니다.)




알면 많이 유용할 것 같습니다.
WinHTTP 방식으로
https://openapi.11st.co.kr/openapi/OpenApiFrontMain.tmall
11번가 상품리스트 불러오는것 한번 강의해 주시면 좋겠습니다
11번가에서 제공하는 API도 있었네요. 확인해보니 다양한 기능을 지원하고 있군요!
상품조회 기능은 향후에 기회가 되면 라이브강의로 진행해드리겠습니다.
좋은 정보 제공해주셔서 대단히 감사드립니다.
대게 위함하다고 생각되는 페이지를 크롤링하는 경우는 드물고 안전한 페이지 정보를 추출하기 때문인데요.
필요에 따라 보안설정을 낮춤으로 변경해야 할 경우, 익스플로러의 설정을 변경하시면 됩니다.