본문 바로가기
■ 칼퇴를 위한 VBA : 사례/- VBA 통합

VBA를 활용한 업무 관련 웹 데이터 수집 자동화

by 포탈메이커 2023. 7. 26.

VBA를 활용한 업무 관련 웹 데이터 수집 자동화

VBA(Visual Basic for Applications)는 Microsoft Office 제품군에서 사용되는 프로그래밍 언어로, 업무 자동화에 많이 활용되고 있다. 특히 VBA를 활용하여 웹 데이터를 수집하고 처리하는 일련의 과정을 자동화할 수 있다. 이를테면 웹 사이트에서 필요한 데이터를 수집하여 엑셀로 저장하거나, 데이터를 가공하여 그래프로 표현하는 등의 작업이 가능하다.

VBA 개발 환경 구축

VBA를 활용한 웹 데이터 수집을 위해서는 먼저 개발 환경을 구축해야 한다. 보통 엑셀을 사용하여 VBA 코드를 작성하고 실행하는데, 개인용 Microsoft 365 구독이 있다면 이미 설치되어 있을 것이다. 만약 설치되어 있지 않다면 Microsoft Office 공식 웹사이트에서 엑셀 프로그램을 다운로드 받아 설치해야 한다.

웹 데이터 수집 자동화 과정

VBA를 활용한 웹 데이터 수집 자동화는 다음과 같은 과정으로 이루어진다.

1. 웹 페이지에 접속하기

VBA 코드를 통해 웹 페이지에 접속하여 데이터를 가져올 수 있다. 이를 위해서는 InternetExplorer 객체를 생성하고, 해당 객체를 통해 웹 페이지에 접속한다. 예를 들어, 구글의 검색 결과를 가져오기 위해서는 https://www.google.com에 접속하는 코드를 작성할 수 있다.

Dim ie As InternetExplorer

' Internet Explorer 인스턴스 생성
Set ie = New InternetExplorer

' 웹 브라우저의 가시성 설정 (True: 표시, False: 숨김)
ie.Visible = True

' 웹 페이지로 이동
ie.Navigate "https://www.google.com"

2. 웹 페이지 내 데이터 가져오기

웹 페이지에 접속한 후, 원하는 데이터를 가져오기 위해서는 HTML 요소를 찾아야 한다. VBA에서는 Document 객체를 통해 HTML 문서를 조작할 수 있다. 예를 들어, 구글 검색 결과 페이지에서 검색어를 입력하고 검색 버튼을 누르기 위해서는 다음과 같은 코드를 작성할 수 있다.

' 검색어 입력
Dim ie As InternetExplorer
Set ie = New InternetExplorer
ie.Visible = True
ie.Navigate "https://www.google.com"

' 웹 페이지 로딩이 완료될 때까지 대기
Do While ie.Busy Or ie.readyState <> READYSTATE_COMPLETE
    DoEvents
Loop

' 검색어 입력
ie.Document.getElementById("lst-ib").Value = "VBA 웹 데이터 수집"

' 검색 버튼 클릭
Dim searchButton As Object
Set searchButton = ie.Document.getElementById("sblsbb")
searchButton.Click

3. 데이터 처리 및 저장하기

데이터를 가져온 후, 필요에 따라 가공하여 저장하거나 다른 프로그램으로 전달할 수 있다. 예를 들어, 구글 검색 결과 페이지에서 타이틀과 URL을 가져와서 엑셀에 저장하고 싶다면 다음과 같은 코드를 작성할 수 있다.

' 검색어 입력
Dim ie As InternetExplorer
Set ie = New InternetExplorer
ie.Visible = True
ie.Navigate "https://www.google.com"

' 웹 페이지 로딩이 완료될 때까지 대기
Do While ie.Busy Or ie.readyState <> READYSTATE_COMPLETE
    DoEvents
Loop

' 검색어 입력
ie.Document.getElementById("lst-ib").Value = "VBA 웹 데이터 수집"

' 검색 버튼 클릭
Dim searchButton As Object
Set searchButton = ie.Document.getElementById("sblsbb")
searchButton.Click

' 검색 결과 타이틀과 URL 추출
Dim titles As Object, urls As Object
Set titles = ie.Document.getElementsByClassName("LC20lb") ' 타이틀 요소
Set urls = ie.Document.getElementsByClassName("r") ' URL 요소

' 결과를 엑셀로 저장
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")

For i = 0 To titles.Length - 1
    ws.Cells(i + 1, 1).Value = titles.Item(i).innerText ' 타이틀 저장
    ws.Cells(i + 1, 2).Value = urls.Item(i).FirstElementChild.href ' URL 저장
Next i

4. 자동화 실행 및 일정 주기 반복

작성한 VBA 코드를 실행하여 웹 데이터 수집과 처리 작업을 자동화할 수 있다. 이를테면 특정 시간대마다 엑셀을 열고 VBA 코드를 실행하는 방식으로 자동화 작업을 수행할 수 있다. 예를 들어, Windows 작업 스케줄러를 활용하여 주기적으로 VBA 코드 실행 파일을 실행하도록 예약할 수 있다.

마무리

VBA를 활용하여 업무 관련 웹 데이터를 자동으로 수집하고 처리하는 작업을 소개했다. VBA를 익히면 업무 효율성을 크게 향상시킬 수 있으며, 웹 데이터 수집 자동화 뿐만 아니라 다양한 작업에 유용하게 활용할 수 있다. VBA 개발 환경을 구축하고 웹 데이터 수집 자동화를 시도해보는 것을 추천한다.