오빠두엑셀 `2026 무료 챌린지` 오픈! 완주하고 수료증 받아가세요! 5년 연속 IT분야 베스트셀러! 「 진짜쓰는 실무엑셀 」로 2026년 공부 끝내기 엑셀이 막히셨나요? Q&A 게시판에서 바로 해결하세요.
메뉴
퀵VBA 강의

엑셀 VBA 웹 크롤링 총정리

오빠두엑셀 by 오빠두엑셀
  • 학습시간 27분
  • 난이도 전문가
  • 작성일 2019.04.28

엑셀로 네이버 뉴스 기사를 1초만에 읽어오는 방법! - 웹 스크래핑 총정리 강의

이 강의에서는 엑셀 VBA 매크로로 네이버 뉴스 기사 목록을 시트에 자동 수집하는 웹 크롤링 방법을 단계별로 다룹니다. ActiveX 웹브라우저를 추가하고 보조 라이브러리를 등록하는 환경 설정부터 URL 쿼리문 분석, HTML 개체 추출, 하이퍼링크 자동 연결까지 살펴보며, 엑셀 2013 이전 버전을 위한 ENCODEURL 함수 추가 방법도 함께 정리합니다.

엑셀 VBA 웹 크롤링 총정리
DOWNLOADS

관련 자료를 모았어요

더 깊이 살펴볼 수 있는 자료를 한곳에

실습 가이드

엑셀 VBA 매크로로 원하는 웹페이지의 내용을 자동으로 수집하는 '웹 크롤링' 방법을 단계별로 알아봅니다. 본 강의에서는 네이버 뉴스 기사 목록을 스크랩하는 VBA 매크로를 직접 작성합니다. 강의는 아래 순서로 진행됩니다.

인터넷 익스플로러 업데이트가 2020년 11월 이후 중단되었습니다. 따라서 네이버를 포함한 일부 페이지는 인터넷 익스플로러 기반 크롤링이 동작하지 않을 수 있습니다. HTTP 요청 방식을 사용한 강의를 추가로 준비했으니 아래 영상 강의도 함께 참고해 주세요.


업데이트 노트
  • 2019년 10월 04일
    : 엑셀 2013 이하 버전에서는 ENCODEURL 함수를 사용자 지정 함수로 추가해야 합니다. 자세한 내용은 ENCODEURL(VBA) 함수 관련 포스트를 참고하세요.
  • 2020년 5월 9일
    : 테이블(table) 및 목록(ul, ol) 항목을 실시간으로 크롤링할 수 있는 IMPORTHTML 함수 추가기능을 업데이트하였습니다.

1. 시트에 웹브라우저 추가하기

개발도구 탭에서 [삽입]을 클릭한 뒤, [ActiveX 컨트롤]의 추가 도구상자를 엽니다. 추가 도구상자에서 Microsoft Web Browser를 선택하여 시트에 삽입합니다.

엑셀 VBA 크롤링 웹 브라우저 추가

오빠두Tip : 엑셀 2013 이후 버전 사용자는 Web Browser Control을 삽입할 때 윈도우 보안 정책 때문에 오류가 발생합니다. 따라서 아래 순서대로 레지스트리 값을 변경해 주어야 합니다.
  1. 변경해야 할 레지스트리 키 값
    {8856F961-340A-11D0-A96B-00C04FD705A2}
  2. 키보드의 윈도우 키 + R을 눌러 '실행' 창을 띄운 뒤, 'Regedit'을 입력합니다.엑셀 VBA 웹 브라우저 삽입 레지스트리 키 변경
  3. 레지스트리 편집기가 실행되면, 좌측 목록에서 아래 경로로 이동합니다.
    Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft
  4. Microsoft 폴더를 우클릭한 뒤, 아래 레지스트리 키 값을 붙여넣어 검색합니다.
    {8856F961-340A-11D0-A96B-00C04FD705A2}

    영상 강의에서는 InternetExplorer의 하위 폴더로 잘못 안내드렸습니다.
    반드시 Microsoft Office 하위 폴더에 있는 Compatibility Flags 레지스트리를 변경해 주세요.

    엑셀 VBA 웹 브라우저 레지스트리 키 검색

  5. 사용 중인 윈도우 버전과 설정에 따라 Compatibility Flags 레지스트리 위치가 다를 수 있습니다. 따라서 한 번에 검색되지 않을 경우 키보드 F3 키를 눌러 Compatibility Flags가 나올 때까지 반복 검색합니다.

    만약 윈도우 10 / 엑셀 오피스 365를 사용 중이라면, 아래 경로를 붙여넣어 바로 이동할 수 있습니다.
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\REGISTRY\MACHINE\Software\Microsoft\Office\16.0\Common\COM Compatibility\{8856F961-340A-11D0-A96B-00C04FD705A2}

  6. Compatibility Flags를 더블클릭한 뒤, Value Data를 '0'으로 변경합니다.엑셀 웹 브라우저 삽입 안됨 레지스트리 변경
  7. 모든 단계를 완료한 뒤, 엑셀을 재실행하면 웹브라우저가 정상적으로 삽입됩니다.

    만약 모든 단계를 진행해도 여전히 '개체를 삽입할 수 없습니다'라는 오류가 발생한다면, 관련 문제 해결 방법을 자세히 정리해 두었으니 관련 포스트를 참고해 주세요.

2. 보조 라이브러리 추가하기

인터넷 익스플로러 개체와 HTML 개체, 그리고 사용자 지정 폼 컨트롤 개체를 활용하기 위해 3개의 보조 라이브러리를 추가합니다.

Alt + F11 키를 눌러 매크로 편집창을 실행한 뒤, [도구] – [참조]를 클릭하여 아래 3개의 라이브러리를 추가해 주세요.

  1. Microsoft Internet Controls : 인터넷 익스플로러(웹 브라우저)를 제어하기 위한 라이브러리입니다. 시트 또는 유저폼에서 Web Browser를 삽입하면 자동으로 추가됩니다.
  2. Microsoft HTML Object Library : HTML 개체를 다루기 위한 라이브러리입니다. 사용자가 직접 선택하여 추가합니다.
  3. Microsoft Forms 2.0 Object Library : 유저폼 개체(버튼, 콤보박스 등)를 활용하기 위한 라이브러리입니다. [삽입] – [유저폼]을 클릭하여 유저폼을 생성하면 자동으로 추가됩니다.

엑셀 크롤링 라이브러리 추가

3. 크롤링 명령문 변수 설정하기

이번 강의에서는 총 4개의 변수를 설정합니다.

  • MyBrowser As InternetExplorer : 웹브라우저 개체를 담는 변수입니다.
  • HTMLDoc As HTMLDocument : 웹브라우저에서 추출해 올 HTML 문서를 담는 변수입니다.
  • iArticle As IHTMLElement : HTML 문서에서 클래스별로 추출할 각 개체입니다.
  • i As Long : 추출한 값을 출력할 행 번호를 나타냅니다.
Dim MyBrowser As InternetExplorer
Dim HTMLDoc As HTMLDocument
Dim iArticle As IHTMLElement
Dim i As Long
 
'// 익스플로러 변수를 시트의 WebBrowser1 브라우저로 설정합니다.
Set MyBrowser = Sheet1.WebBrowser1

4. 크롤링 타깃 URL 쿼리문 분석

네이버에서 뉴스 기사를 스크랩하기 위해서는 URL의 쿼리문 구조를 먼저 이해해야 합니다. 검색 쿼리문은 네이버 정책에 따라 변경될 수 있으므로, 상황에 맞게 유연하게 수정해 주어야 합니다.

4-A. 검색 항목과 검색어 쿼리문 분석하기
  • 네이버에서 '유튜브'를 검색한 뒤, '뉴스 더보기' 버튼을 클릭하여 뉴스 페이지로 이동하면 아래 URL 주소로 이동합니다.
    search.naver.com/search.naver?&where=news&query=%EC%9C%A0%ED%8A%9C%EB%B8%8C&sm=tab_tmr&frm=mr&nso=so:r,p:all,a:all&sort=0
  • where=news 요소는 네이버 검색 항목 중 뉴스 페이지를 보여 주도록 지정하는 부분입니다.
  • query='URL 인코딩(유튜브)' 요소는 해당 검색어의 결과값을 출력하도록 지정하는 부분입니다.
  • 그 외 나머지 항목들은 크게 중요하지 않으므로 아래 URL 링크만 복사하여 검색해 보겠습니다.
    search.naver.com/search.naver?&where=news&query=%EC%9C%A0%ED%8A%9C%EB%B8%8C
  • 나머지 항목을 모두 지웠지만, 이상 없이 원하는 단어로 잘 검색되는 것을 확인할 수 있습니다.
4-B. 검색 페이지 번호 쿼리문 분석하기
  • 이번에는 페이지 이동을 살펴보겠습니다. 2번째 페이지로 이동하면 아래와 같은 URL로 이동합니다.
    search.naver.com/search.naver?&where=news&query=%EC%9C%A0%ED%8A%9C%EB%B8%8C&sm=tab_pge&sort=0&photo=0&field=0&reporter_article=&pd=0&ds=&de=&docid=&nso=so:r,p:all,a:all&mynews=0&cluster_rank=14&start=11&refresh_start=0
  • where 항목과 query 항목은 이전과 동일합니다.
  • 뒤에 여러 항목이 추가되었으나, 자세히 보면 페이지 이동과 관련 있어 보이는 항목은 'start' 항목임을 알 수 있습니다.
  • 이번엔 쿼리문을 아래와 같이 작성하여 검색해 보겠습니다. 마찬가지로 이상 없이 잘 검색됩니다.
    search.naver.com/search.naver?&where=news&query=%EC%9C%A0%ED%8A%9C%EB%B8%8C&start=11
  • start 값을 12, 13으로 변경하면 해당 순번의 기사를 페이지의 첫 번째 기사로 출력합니다.

5. 웹브라우저에서 URL 검색하기

변수로 설정한 MyBrowser에서 Navigate 함수를 사용하여 원하는 URL로 이동합니다.

With MyBrowser
    .Navigate Sheet1.Range("B2").Value
 
    '// Wait_Browser에 대한 내용은 VBA2-3 이전 강의를 참고하세요.
    Wait_Browser MyBrowser
End With
 
'//-------------------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

[링크] MS 홈페이지 WebBrowser.Navigate 함수 상세 설명 보러가기

6. HTML 개체 분석하기

6-A. 웹브라우저의 페이지 분석 도구 사용

인터넷 익스플로러, 크롬, Edge, 파이어폭스 등 모든 웹브라우저는 페이지 분석 도구를 제공합니다. 본인이 사용하기 편한 웹브라우저 창에서 키보드 F12 키를 눌러 페이지 분석 도구를 실행합니다.

이후 분석 도구에서 '마우스 커서' 모양의 아이콘을 클릭한 뒤, 스크랩하려는 항목 위로 커서를 이동하면 해당 항목의 HTML 코드를 확인할 수 있습니다.

크롬 크롤링 HTML 페이지분석 툴 사용

6-B. HTML 코드에서 원하는 개체 및 요소 찾기

네이버 뉴스 검색 페이지에서 HTML 문을 확인합니다. 각 기사를 나타내는 개체는 'sp_each_title' 클래스이며, 기사 제목과 링크는 해당 클래스의 'title' 및 'href' 요소에서 가져올 수 있습니다.

  • 기사 개체 : sp_each_title 클래스
  • 기사 제목 : 해당 클래스의 title 요소
  • 기사 링크 : 해당 클래스의 href 요소

네이버 크롤링 HTML 개체 확인

6-C. VBA에서 원하는 개체 불러오기

VBA의 HTML Object Library에서 지원하는 HTML 문서의 개체 추출 방법은 크게 3가지가 있습니다.

(이 외에도 HTML 문서를 전부 읽어 와 InStr 함수로 직접 파싱하는 방법이 있지만,
번거로운 작업이므로 불가피한 상황을 제외하고는 아래 3가지 방법을 사용합니다.)

HTML 문에서 개체의 ID와 Class 요소로 값을 반환하는 방법은 이전 네이버 유저폼 만들기 강의에서도 설명드린 적이 있습니다. 자세한 내용은 관련 링크를 참고하세요.

  1. .getElementById
    : HTML 문서에서 개체의 ID 값으로 개체를 찾아 반환합니다. 하나의 문서에서 ID는 고유값이므로 단 한 개만 존재합니다. 따라서 스크랩할 개체가 ID 값을 가지고 있다면 가장 간단하게 추출할 수 있습니다.
  2. .getElementsByClassName
    : HTML 문서에서 개체의 Class 값으로 개체를 찾습니다. 동일한 클래스명을 가진 개체는 여러 개 존재할 수 있으므로, For문을 통해 원하는 개체를 필터링해 사용합니다.
  3. .getElementsByTagName
    : HTML 문서에서 개체의 Tag 값으로 개체를 찾습니다. 대부분의 경우 getElementById와 getElementsByClassName으로 원하는 개체를 불러올 수 있으나, a 태그(링크 태그)나 head 태그(머리말 태그)와 같이 특정 태그를 통째로 불러와야 할 때 사용합니다.
'// HTML 문서 추출
    Set HTMLDoc = .Document
 
    '// 최초 행값 입력
    i = 6
 
    '// HTML 개체검색
    For Each iArticle In HTMLDoc.getElementsByClassName("_sp_each_title")
        '// 요소별 값 추출
    Next
6-D. 각 개체의 요소값 추출하기

추출한 개체에서 요소별로 값을 가져옵니다. 이번에 필요한 값은 기사의 제목과 링크입니다. 따라서 'title'과 'href' 요소 값을 추출합니다. IHTMLElement 개체에서 title은 기본 속성으로 바로 불러올 수 있으며, href 요소는 getAttribute 함수를 이용해 불러옵니다.

'// HTML 개체검색
    For Each iArticle In HTMLDoc.getElementsByClassName("_sp_each_title")
        '// 요소별 값 추출
        Sheet1.Cells(i, 1) = iArticle.Title
        Sheet1.Cells(i, 2) = iArticle.getAttribute("href")
        i = i + 1
    Next

7. 셀에 하이퍼링크 추가하기

입력된 기사 링크를 클릭하면 자동으로 해당 기사로 이동할 수 있도록 각 셀에 하이퍼링크를 연결합니다. 아래 명령문을 For Each 루프 안에서 'i를 증가시키기 직전 단계'에 붙여넣습니다.

Sheet1.Hyperlinks.Add Sheet1.Cells(i, 2), Sheet1.Cells(i, 2)

엑셀 크롤링 하이퍼링크 삽입

8. 버튼에 매크로 삽입 및 크롤링 완료 메시지 띄우기

명령문이 종료되면 스크랩이 완료되었다는 안내 메시지를 띄워 줍니다. 아래 코드를 명령문 가장 마지막 부분에 복사하여 붙여넣습니다.

MsgBox "검색하신 단어 [" & Sheet1.Range("B1") & "] 에 대한 네이버 뉴스기사 스크랩핑을 완료하였습니다."

엑셀 웹 크롤링 안내 메세지 띄우기

[개발도구] – [삽입] – [양식 컨트롤] 에서 '버튼'을 추가합니다. 이후 버튼을 우클릭한 뒤, 매크로 지정으로 이동합니다. 매크로 목록에서 'Web_scraping' 명령문을 버튼에 연결합니다. 엑셀 양식 컨트롤에 대한 자세한 내용은 관련 링크를 참고하세요.

크롤링 기능 버튼에 매크로 삽입

9. 강의에 사용된 네이버 뉴스 크롤링 전체 명령문

Option Explicit
 
Sub Web_scarping()
 
Dim MyBrowser As InternetExplorer
Dim HTMLDoc As HTMLDocument
Dim iArticle As IHTMLElement
Dim i As Long
 
'// 익스플로어(XML변수 설정)
Set MyBrowser = Sheet1.WebBrowser1
 
'// 검색 (XML 요청)
With MyBrowser
    .Navigate Sheet1.Range("B2").Value
 
    Wait_Browser MyBrowser
 
    '// HTML 추출
    Set HTMLDoc = .Document
 
    i = 6
 
    '// 개체검색
    For Each iArticle In HTMLDoc.getElementsByClassName("_sp_each_title")
        '// 요소별 값 추출
        Sheet1.Cells(i, 1) = iArticle.Title
        Sheet1.Cells(i, 2) = iArticle.getAttribute("href")
        Sheet1.Hyperlinks.Add Sheet1.Cells(i, 2), Sheet1.Cells(i, 2)
        i = i + 1
    Next
 
End With
 
MsgBox "검색하신 단어 [" & Sheet1.Range("B1") & "] 에 대한 네이버 뉴스기사 스크랩핑을 완료하였습니다."
 
End Sub

10. ENCODEURL 함수 추가하기 (엑셀 2013 이하 버전)

엑셀 2013 이전 버전 사용자는 아래 ENCODEURL 사용자 지정 함수를 추가해야 합니다.

Function ENCODEURL(varText As Variant, Optional blnEncode = True)
 
'############################################################
'한글/영문 텍스트를 URL 주소로 변경합니다.
'https://www.oppadu.com/vba-encodeurl-함수/
'############################################################
 
Static objHtmlfile As Object
 
If objHtmlfile Is Nothing Then
    Set objHtmlfile = CreateObject("htmlfile")
    With objHtmlfile.parentWindow
    .execScript "function encode(s) {return encodeURIComponent(s)}", "jscript"
    End With
End If
 
If blnEncode Then
    ENCODEURL = objHtmlfile.parentWindow.encode(varText)
End If
 
End Function

자주묻는질문

Q1. 웹페이지 전체의 서식을 유지한 채 시트에 붙여넣고 싶어요

인터넷 창에 보이는 페이지 전체를 서식이 유지된 상태로 엑셀에 붙여넣고 싶다면 아래 코드를 응용해 보세요.

단, 페이지 크기와 페이지에 사용된 개체 수(체크박스, 텍스트박스 등)에 따라 동작 속도가 느려질 수 있으므로 주의가 필요하며, 상황에 따라 적절히 수정하여 사용할 수 있습니다.

아래 명령문은 With MyBrowser ~ End With 사이에 붙여넣어 사용합니다. 수정된 명령문을 실행하면 웹페이지 전문을 복사한 뒤 새로 생성한 시트에 서식을 유지한 채 붙여넣습니다.

'// <--!기존 명령문의 With MyBrowser ~ End With 를 아래 명령문으로 대체합니다 -->
'################################
' 웹페이지의 크기, 사용된 개체수에 따라 동작속도가 느려질 수 있으므로 주의합니다.
' 새로운 시트를 생성한 뒤 웹페이지 전문을 복사/붙여넣기 합니다
'################################
With MyBrowser
    .Navigate Sheet1.Range("C3").Value
 
    Wait_Browser MyBrowser
 
    '// HTML 추출
    Set HTMLDoc = .Document
    .Document.execCommand "SelectAll"
    .Document.execCommand "Copy"
 
    Application.ScreenUpdating = False
    Dim newWS As Worksheet
    Set newWS = ThisWorkbook.Worksheets.Add
 
    newWS.PasteSpecial , False, False
    Application.ScreenUpdating = True
 
End With
Q2. 여러 개의 클래스를 가진 개체를 불러오고 싶습니다

크롤링 작업 시, 특별한 경우를 제외한 대부분의 경우 Tag와 Class 항목을 기준으로 값을 불러옵니다. Tag 값은 1개로 고정되어 있어 문제가 되지 않지만, 여러 개의 클래스를 가진 개체를 불러올 때는 어떻게 처리해야 할까요?

1 네이버 쇼핑 여러개 클래스

우선 한 가지 팁을 드리자면, 여러 개의 클래스가 입력된 경우 대부분은 마지막에 입력된 클래스만으로 값을 불러와도 정상적으로 동작하는 경우가 많습니다.

3 대부분 마지막 CLASS로 구분

AND 조건으로 여러 개의 CLASS를 구분해야 할 경우

하지만 반드시 두 개의 클래스를 동시에 지정해야 하는 상황이라면, .getElementsByClassName에서 클래스를 '띄어쓰기'로 구분하여 입력합니다. 띄어쓰기로 클래스를 구분하면 .getElementsByClassName은 여러 개의 클래스를 "AND" 조건으로 묶어 불러옵니다.

iArticle In HTMLDoc.getElementsByClassName("num _price_reload")
'// 클래스가 num 이고 _price_reload 인 개체를 불러옵니다.

2 클래스 띄어쓰기 AND 조건

OR 조건으로 여러 개의 CLASS를 구분해야 할 경우

그렇다면 AND 조건이 아니라 OR 조건으로 여러 개의 클래스를 불러와야 할 경우에는 어떻게 해야 할까요?

만약 XML을 이용하고 헤더 값으로 최신 버전의 Agent를 사용하여 HTML 문을 읽어 왔다면 .querySelectorAll 함수를 이용할 수 있습니다. 예를 들어 A 클래스 또는 B 클래스 개체를 모두 불러오고 싶을 때는 아래와 같이 함수를 입력합니다.

HTMLDoc.querySelectorAll(".A클래스,.B클래스")

하지만 엑셀 VBA에서 제공하는 Internet Explorer 라이브러리를 사용한다면 .querySelectorAll 함수의 사용이 제한됩니다. (querySelectorAll 함수는 IE8 버전 이상에서만 동작합니다.)

따라서 본 강의에서 설명드린 인터넷 익스플로러 기반 명령문에서 OR 조건으로 여러 개의 CLASS를 불러오기 위해서는 2가지 대안을 고려할 수 있습니다.

  • For Each 문을 여러 번 작성합니다.
    For Each iArticle In HTMLDoc.getElementsByClassName("A클래스")
    '// 본문입력
    Next
     
    For Each iArticle In HTMLDoc.getElementsByClassName("B클래스")
    '// 본문입력
    Next
     
    '// 반복...
  • 또는 추가 명령문을 작성하여 코드를 간소화합니다.
    Sub Get_MultipleClasses(HTMLDoc As HTMLDocument, Classes as Variant)
     
    Dim iArticle As IHTMLElement
    Dim Class as Variant
     
    For Each Class in Classes
    	For Each iArticle In HTMLDoc.getElementsByClassName(Class)
    	'//본문입력
    	Next
    Next
     
    End Sub

     

댓글 163
4.8 (76개 평가)
졸려여
졸려여 2019.12.24 03:35
안녕하세요. 오빠두엑셀 참고해서 vba 공부하고 있습니다.
워낙 상세한 설명으로 인터넷 익스플로러를 통한 웹크롤링은 어느 정도 감을 잡았는데요.
크롬 웹브라우저를 이용해서 익스플로러와 동일한 크롤링을 해보고 싶은데 구글 찾아보아도 셀레니움을 이용하는 방식밖에 안나와서 문의드려요ㅎㅎ
1. Dim MyBrowser As InternetExplorer와 같이 As chrome 사용할 수 있는 방법이 없을까요
2. 1번의 internetexplorer일 때는 Set MyBrowser = Sheet1.WebBrowser1 에 에러가 없었으나 셀레니움 라이브러리 설치 후 chromedriver를 이용하면 vba에서 에러 발생합니다. 해결 방법이 있을까요?ㅠ
오빠두엑셀
오빠두엑셀 2019.12.24 03:40
안녕하세요?:) 오빠두엑셀입니다.
크롬 웹브라우저를 셀레니움 없이도 이용을 할수는 있습니다. 정말 이용만요... 크롬에서 제공하는 라이브러리가 있지만 VB6에서는 지원이 안되는걸 알고있어요..

1. 방법이 없습니다.
2. 셀레니움 라이브러리를 활성화 하신 뒤
Dim MyBrowser As New WebDriver
MyBrowser.Start "chrome", "http://google.com"
로 입력해보시겠어요?^-^
하나를하더라도최선을
하나를하더라도최선을 2020.09.05 19:11
익스플로워는 ms에서 만든 것이라 컨트롤이 제공되지만 웹드라이버는 다른 개념입니다.
셀레니움이 아니면 컨트롤이 불가합니다.
속도도 느리고 번거로운데 그냥 Winhttp 크롤링을 하심이 좋지 않을까요?
조성웅
조성웅 2019.12.24 03:40
이번 것은 완성 파일 안 올려주시나요?
오빠두엑셀
오빠두엑셀 2019.12.24 03:40
안녕하세요? 오빠두엑셀입니다.
포스트를 하나씩 수정하고 있습니다. 조만간 완성파일도 정리해서 올려드리도록 하겠습니다.
이번주 안으로 올려드릴테니, 주말에 다시 한번 확인주시겠어요?^_^* 감사합니다.
조성웅
조성웅 2019.12.24 03:47
감사합니다~ 역시 최고!
오빠두엑셀
오빠두엑셀 2019.12.24 03:40
안녕하세요? 오빠두엑셀입니다.
포스트를 하나씩 수정하고 있습니다. 조만간 완성파일도 정리해서 올려드리도록 하겠습니다.
이번주 안으로 올려드릴테니, 주말에 다시 한번 확인주시겠어요?^_^* 감사합니다.
오연택
오연택 2019.12.26 12:36
안녕하세요. 예제파일로 연습도 해보고 싶은데 예제파일은 다운받을 수 없을까요~?
오빠두엑셀
오빠두엑셀 작성자 2019.12.27 16:39
안녕하세요? 오빠두엑셀입니다.^_^ 이번 주말에 예제파일도 같이 첨부하여 드리겠습니다.
주말에 다시 확인해주시겠어요? 감사합니다.^_^*
백종진
백종진 2019.12.27 02:30
너무 좋은강의 감사합니다
네이버 스마트스토어 자료 분석에 응용해보려 하는데요!
각 상품이 분류된 카테고리 명과 해당 검색키워드의 등록된 전체 상품수를 크롤링 하고싶은데 class로 도저히 값이 반환되지 않아서 문의드립니다
https://search.shopping.naver.com/search/all.nhn?where=all&frm=NVSCTAB&query=%EC%9E%90%EB%8F%99%EA%B8%89%EC%8B%9D%EA%B8%B0
해당 URL에서 "생활/건강>반려동물>식기/급수기>자동급식기" 카테고리를 추출하기위하여
getElementsByclass 명령문 값에depth 또는 cat_id_50006736 같은 값들을 입력해보고있는데 도저히 나오질 안네요 ㅠㅠ

검색어가 바뀌면 카테고리 값도 바뀌던데...class로 찾는것이 아닌가요??
오빠두엑셀
오빠두엑셀 작성자 2019.12.27 16:45
안녕하세요? 오빠두엑셀입니다.^_^
적어주신 링크를 가서 확인해보니, 원하는 브랜드/카테고리를 URL주소로 설정해주시면 됩니다.
예를 들어,
https://search.shopping.naver.com/search/all.nhn?where=all&frm=NVSCTAB&cat_id=50000057&query=%EC%9E%90%EB%8F%99%EA%B8%89%EC%8B%9D%EA%B8%B0
중간에 " &cat_id=xxxxxxxxxxxxxxx& " 를 추가해주시면 되는데요. xxx는 카테고리의 고유번호를 넣어주시면 됩니다.^_^
귀염둥이
귀염둥이 2020.01.31 19:16
감사합니다! 잘 되는거같아요!!!!!
엑셀초보
엑셀초보 2020.01.01 19:13
와~ 너무 신기해요. ^^
부동산 관련 책을 읽다가 저자가 부동산 분석 프로그램을 배포하는 것을 보았어요.

업데이트는 직접 다운 받아서 프로그램 폴더에 붙여넣어야하는데, 그 분석 프로그램을 GUI 프로그램과 웹 크롤링으로 만든 것 같아서 실제로 비슷하게 만들어보면 프로그래밍 독학이 재밌을 것 같아 이것저것 설치를 했는데, 어렵더라구요. ㅜ.ㅜ

그러다 우연히 이 곳에 들어왔는데 엑셀로 웹크롤링이 된다는 것과 엑셀에 포함된 User form으로 비주얼베이직 같은 GUI 를 만들 수 있다는 것을 처음 알았어요.

엑셀 기초~ VBA 등 고급 강의를 무료로 제공해주시는 것도 감사한데, 알기 쉽게 설명해 주셔서 정말 감사합니다.

새해 건강하시고, 복 많이 많으시길 기원합니다. ^^
오빠두엑셀
오빠두엑셀 작성자 2020.02.12 23:44
안녕하세요~^^* 답글을 이제 확인해 답변이 늦었습니다.
엑셀초보님도 2020년 새해복 많이 받으시고 행복한 한해 되시길 기원합니다.
감사합니다!
박승용
박승용 2020.01.06 10:37
안녕하세요? 강좌 너무 잘 보고 있습니다. 많은 도움이 됩니다.
강좌 처음에 나오는 것처럼 이미지도 엑셀 시트에 넣고 싶은데 방법 알려주세요
오빠두엑셀
오빠두엑셀 작성자 2020.01.06 19:03
안녕하세요? 오빠두엑셀입니다. ^-^
웹에서 이미지를 불러오는 VBA 명령문은 별도 포스트로 준비해드리겠습니다.
영상과 포스트, 커뮤니티까지 운영하려니 하나하나 준비하는데 시간이 오래걸리네요 ㅠ-ㅠ 양해부탁드리겠습니다
천동빈
천동빈 2020.01.20 18:44
열성적 강의 감사합니다.
저는 윈도우10에 EXCEL16을 상용하는데
시트에 웹브라우저 추가하기 를 위해
위의 설정대로 Compatibility Flags 값도 바꾸어 주었는데
자꾸 "개체를 삽입할 수 없습니다."와 수식 입력줄에 EMBED("Shell Explore.2", "")가
나타나 브라우저 삽입을 할 수 없습니다.
뭐가 잘못된 걸 까요?
오빠두엑셀
오빠두엑셀 작성자 2020.01.20 20:20
안녕하세요!^^*
많은 경우가 옳지않은 레지스트리값을 변경하셨을 때 해당 문제가 발생합니다.
아래 링크에 자세한 설정법을 적어드렸으니 확인해보시겠어요?
https://www.oppadu.com/개체를-삽입할-수-없습니다-오류-해결/
혹시 위 링크대로 설정을했는데도 문제가 해결 안되실경우, 언제든 다시 댓글 남겨주시면 회신하여드리겠습니다.^^*
유정훈
유정훈 2020.02.07 04:46
안녕하세요. 강의 너무 잘 보고 있습니다. 우선 감사드립니다.
EXCEL 2013과 2019를 사용하는데 두 버전 모두 천동빈씨와 같은 증상이 나타나서
선생님께서 말씀하신대로 따라서 레지스트리 값 변경을 그대로 따라서 했는데도
개체를 삽입할수가 없다고 나오네요. 어떻게 해야지 해결이 될까요..
회신 부탁드립니다. 항상 감사드립니다.
오빠두엑셀
오빠두엑셀 작성자 2020.02.07 18:33
안녕하세요~^^*
한번 더 Microsoft 아래 경로에 있는 레지스트리 값을 변경했는지 확인해보시겠어요?
만약 Microsoft 하위 경로의 값을 변경했는데도 오류가 발생한다면, 윈도우 OS 또는 설치된 엑셀의 설정문제가 아닐까 생각됩니다..
제가 상황을 직접 보지않고서는 정확한 답변을 드리기가 어려울것 같습니다 ㅠ-ㅠ...
큰 도움이 되지 못해 죄송합니다.
감사합니다.
안웅환
안웅환 2020.01.24 23:35
안녕하세요 강의 잘보고 있습니다. 덕분에 하나도 모르던 VBA에대해 조금씩 알아가고 있습니다. 제가 궁금한 것은 VBA로 엑셀안에 있는웹브라우저를 열어서 웹사이트 전체 화면 내용을 긁어 복사해서 주변서식에 맞게 붙여 넣고 싶은데 매크로 기록하기로 하면 이과정이 되지 않더라구요. 어떻게 하면 특정웹브라우저화면 내용을 복사해서 붙여넣기하는 VBA를 구현할 수 있을까요? 검색해서 찾아보았는데 결구 못찾아서 이렇게 여쭈어 봅니다. 감사합니다.
오빠두엑셀
오빠두엑셀 작성자 2020.01.26 03:37
안웅환님 빠하! 안녕하세요?^^
웹브라우저에서 일어나는 작업은 엑셀 외부에서 일어나는 동작이라 매크로기록기로 기록되지 않습니다.
우선 아래 명령문을 응용해보는건 어떠세요?


'// HTML 추출
Set HTMLDoc = .Document

'//
Debug.Print HTMLDoc.body.innerHTML

'//
Debug.Print HTMLDoc.body.innerText
i = 6


완성된 명령문에서 HTML 추출 부분에 위 코드를 추가하시면 직접실행창으로 웹브라우저에 나타난 전체 HTML문과 Text를 확인하실 수 있습니다.
추출된 전체 문장에서 Instr 또는 GetElementbyID 등의 함수를 사용하시면 그중 원하는 부분만 추출해서 사용하실 수 있습니다.^^
만능슈퍼믹
만능슈퍼믹 2020.01.25 00:08
정말 원하던 강의와 자료입니다. 감사합니다.

한가지 여쭙고 싶은 게 있는데.....

특정 class 하위에 a태그로 여러 링크가 있고 이 링크의 문자를 각각 엑셀의 셀에 나타내고자 합니다.

iArticle.innerText로 사용하고 있는데 이때에는 한 셀에 관련 문자가 한번에 입력이 되더라구요...

질문에 제대로 전달 될 수 있을지 모르겠지만 가능하시면 답변 부탁 드립니다.
오빠두엑셀
오빠두엑셀 작성자 2020.01.26 03:45
슈퍼믹님 빠하 ! 안녕하세요?^^
만약 특정 Class 밑으로 a 태그를 가진 값만 나타내고자 하신다면,InnerText가 아닌 iArtticle.InnerHTML 로 HTML문서를 출력하신 뒤, getElementbyClassName로 원하는 Class의 개체를 걸러주세요.
그 후, 다시 For문으로 TagName 이 'a'인 것들만 추려서 셀에 나타내주시면 될듯 합니다.^^
대략적으론 이런 순서가 되겠네요..

HTMLDoc = iArticle.InnerHTML
For Each element1 In HTMLDOC.GetElementbyClassName("xxxx")
If Element1.TagName = "a" then xxxxx
Next


관련 내용은 이전 네이버로그인 만들기 강의에서 설명드린 적이 있으니 아래 링크를 참고하면 도움이 되실겁니다.
https://www.oppadu.com/엑셀-vba-네이버-자동로그인-프로그램-완성강의-오빠두/
제 답변이 도움되셨길 바랍니다. 감사합니다.^-^*
만능슈퍼믹
만능슈퍼믹 2020.01.26 11:39
빠른 답변 감사드립니다
잘 응용해 보겠습니다
새해 복 많이 받으세요
sarihwa1
sarihwa1 2020.01.25 00:34
안녕하세요. 강의를 보고 웹 크롤링 VBA를 이해할 수 있었습니다. 감사합니다.

제가 궁금한 것은 웹페이지의 특정부분 데이터를 크롤링 하는 것이 아니라 웹페이지 전체를 복사할 수 있는 VBA작성입니다.

엑셀안에 웹브라우저를 동작시켰습니다. 원하는 사이트에서 화면을 마우스로 긁어서 복사하고 붙여넣기를 했습니다. 매크로 기록기로 긁고 주변서식에 맞춰 붙여넣기 한 것을 실행해보니 웹사이트 화면 전체 내용의 복사 붙여넣기가 안되어서 여러 사이트를 찾아보았지만 찾지 못했습니다.

어떤 방법이 있을까요?

comp.fnguide.com의 한 페이지 전부를 복사해서 엑셀시트에 주변서식 맞추기(그림등을 빼려고요)로 붙여넣고 싶습니다. 외국사이트에서도 제 능력의 범위에서는 못찾겠어요.. 도움이 필요합니다. 감사합니다.
오빠두엑셀
오빠두엑셀 작성자 2020.01.27 21:50
sarihwa1 님 빠하! 안녕하세요 ^-^*

한페이지 전부를 복사해서 붙여넣으시려면, HTML 또는 InnerText 전체를 읽어오신 뒤 작업하셔야합니다.
만약 웹페이지에 보이는 그대로를 복사해서 붙여넣기 하시려면, "MS워드실행 - 붙여넣기 - 클립보드 복사 - 붙여넣기" 순으로 작업을 하셔야하는데요.
웹페이지에 보이는 전부를 그대로 복사/붙여넣기 하신다는 가정하에, 아래 명령문을 MS 워드 라이브러리와 응용해보시겠어요^^*
아래 명령문을 Set HTMLDoc = .Document 와 End With 사이에 붙여넣기 하신 뒤 실행하시면, 새로운 시트가 생성되면서 웹페이지의 모든 항목을 복사/붙여넣기 합니다.
.ExecWB 17, 0
.ExecWB 12, 2

Dim NewWS As Worksheet
Set NewWS = ThisWorkbook.Worksheets.Add

NewWS.PasteSpecial link:=False, displayasicon:=False

다만 페이지의 크기나 항목 개수에 따라 처리속도가 오래 걸릴 수 있습니다.
제 답변이 도움이 되셨으면 좋겠습니다. 감사합니다.
sarihwa1
sarihwa1 2020.01.29 18:10
설날연휴임에도 불구하고 빠른 답변 감사드립니다. 덕분에 잘 해결되었습니다. 다시 한 번 감사드립니다.
free****
free**** 2020.05.14 18:07
엑셀시트에 '주변서식 맞추기'로 붙여넣기가 안됩니다. 계속 그림 등이 따라 붙네요. 그리고 기존에 있는 시트에 웹페이지의 모든 항목을 복사.붙여넣기 하려면 어떻게 해야 하나요. 기존에 내용이 있으면 모두 삭제하고 붙여넣기 해야 할 것 같아요.
오빠두엑셀
오빠두엑셀 작성자 2020.05.16 14:41
안녕하세요?^^
포스트 자주묻는질문1 을 확인해보시겠어요?
오빠두엑셀
오빠두엑셀 작성자 2020.01.28 00:07
안녕하세요~^-^*
문의주신 내용 정리하여 해당 글의 자주묻는질문1 로 적어드렸습니다.
확인부탁드릴께요. 감사합니다.