이번 포스팅에서는 엑셀 VBA 크롬 제어 세번째 글로 엑셀 매크로 만들기 – 네이버 자동 로그인 방법에 대해 정리해보려고 합니다.
참고로 앞선 포스팅에서 엑셀 VBA를 통한 크롬 제어 방법에 대한 셀레니움, 웹드라이버 설치 방법과 엑셀 VBA 기초 설정 방법에 대해 정리한 바 있습니다.
이번 포스팅에서는 앞선 내용을 기반으로 엑셀 매크로 만들기 – 크롬 웹브라우저를 통한 네이버 자동 로그인 방법에 대해 정리해보았습니다. 우선 네이버 자동 로그인을 위한 참조 설정 방법과 해당 코드에서 사용되는 기본 VBA 문법과 전체 코드를 살펴볼 예정입니다.
엑셀 VBA 실행 및 참조 설정
엑셀 매크로 만들기 – 크롬 웹브라우저를 통한 네이버 자동 로그인을 위해 기본적인 VBA 실행 방법과 참조 설정 방법은 아래와 같습니다. 앞선 포스팅(엑셀 VBA 기초 설정)에서 이미 구체적으로 정리해두었기 여기서는 간단하게 설명하고 넘어가도록 하겠습니다.
엑셀 VBA 사용을 위해 비주얼 베이직 편집기를 시작하려면 리본 메뉴의 “개발 도구”탭에서 “Visual Basic” 아이콘을 선택해줍니다. 만약 해당 “개발도구”가 나타나지 않는다면 앞선 포스팅에 개발 도구 활성화 방법에 대해 정리해두었습니다.
그 다음 엑셀 매크로 만들기 – 크롬 웹브라우저를 통한 네이버 자동 로그인 코드를 넣을 모듈을 생성합니다.
Excel 매크로는 모듈이라는 단위에 저장이 되는데요, VBA 에디터의 왼쪽의 프로젝트 창에서 프로젝트를 선택하고 “마우스 우클릭 > 삽입 > 모듈” 을 통해 생성할 수 있습니다.
그 다음은 엑셀 매크로 만들기 – 네이버 자동 로그인을 위한 외부 라이브러리들을 참조에 추가해 넣어야 합니다. 엑셀 VBA 참조 설정(Reference setting)은 앞서 설명한 바와 같이 VBA 프로젝트에서 외부 라이브러리나 기능을 사용하기 위해 필요한 과정입니다.
참조 설정은 도구 > 참조 실행 메뉴로 진입하든지 실행 단축키 Alt + F11로 열 수 있습니다.
참조 화면이 나타나면 아래와 같이 2가지 항목을 추가해줍니다.
Selenium Type Library Microsoft Forms 2.0 Object Library
- Selenium Type Library: Selenium은 웹 브라우저를 자동화하는 도구로서, 웹 사이트에서 데이터를 추출하거나 웹 애플리케이션을 테스트하는데 사용됩니다. 엑셀 VBA에서 Selenium Type Library를 참조에 추가하면, VBA 코드에서 웹 브라우저를 제어하고 웹 페이지의 요소를 조작할 수 있게 됩니다. 이를 통해 웹 페이지에서 데이터를 크롤링하거나, 웹 기반 프로세스를 자동화하는 작업을 수행할 수 있습니다.
- Microsoft Forms 2.0 Object Library: 이 라이브러리는 엑셀 VBA에서 사용자 인터페이스 컨트롤을 생성하고 관리하는 데 사용됩니다. Microsoft Forms 2.0 Object Library를 참조에 추가하면, VBA 코드에서 사용자 정의 폼, 대화 상자 및 다양한 컨트롤(예: 텍스트 상자, 목록 상자, 옵션 버튼 등)을 만들 수 있습니다. 이를 통해 엑셀 프로젝트에 사용자 친화적인 인터페이스를 제공하고 사용자 입력을 처리하는데 도움이 됩니다.
참고로 Microsoft Forms 2.0 Object Library를 참조하지 않아도 만들 수 있지만 네이버에서 컴퓨터가 자동으로 입력하는 방식으로 코드를 구성하면 100% 필터링이 되어 자동입력 방지 시스템 코드 입력 화면이 나타나게 됩니다. 최대한 사용자가 입력하는 것처럼 엑셀 매크로 만들기를 하기 위함입니다.
참고로 참조 추가 시 Microsoft Forms 2.0 Object Library가 보이지 않는다면, “찾아보기” 버튼을 눌러 c:\system32\fm20.dll 파일을 추가해주면 됩니다.
위와 같이 설정이 완료되면 엑셀 매크로 만들기 결과물을 실행 가능하도록 하기 위해 “파일 > 다른 이름으로 저장”을 선택하고 파일 유형에서 “Excel 매크로 사용 통합 문서(*.xlsm)”를 선택 한 다음 저장합니다.
엑셀 매크로 만들기 코드 – 크롬 제어를 통한 네이버 자동 로그인
이번 세션에서는 액셀 매크로 만들기 코드 – 엑셀 VBA와 셀레니움을 사용하여 크롬을 통해 네이버에 자동 로그인하는 방법을 알아보겠습니다. 이 예시 코드를 작성하기 전에, 기본적인 VBA 문법과 사용할 메소드를 먼저 살펴보겠습니다.
Dim 선언
VBA에서는 변수를 선언할 때 Dim
키워드를 사용합니다. 변수를 선언한 후에는 =
연산자를 사용하여 값을 할당할 수 있습니다. 예를 들어, 아래와 같이 사용자 이름과 비밀번호를 저장할 변수를 선언하고 값을 할당할 수 있습니다.
Dim UserName As String
Dim Password As String
UserName = "네이버 아이디"
Password = "네이버 패스워드"
클립보드 사용
Microsoft Forms 2.0 Object Library를 참조로 추가한 후, DataObject
를 사용하여 클립보드에 텍스트를 복사하고 붙여넣기 할 수 있습니다.
Dim clipboard As DataObject
Set clipboard = New DataObject
clipboard.SetText UserName
clipboard.PutInClipboard
좀 더 상세히 살펴보면 아래와 같습니다. 클립보드를 사용하는 것은 사용자가 입력하는 것처럼 엑셀 매크로 만들기를 하기 위함 입니다. (아이디/비번을 복사&붙여넣기 하는 것처럼 구성 예정)
Dim clipboard As DataObject
:DataObject
타입의 변수clipboard
를 선언합니다.DataObject
는 데이터를 클립보드에 저장하거나 클립보드에서 가져오는 데 사용되는 객체입니다.Set clipboard = New DataObject
:clipboard
변수에 새로운DataObject
인스턴스를 할당합니다. 이렇게 하면clipboard
를 사용하여 클립보드와 상호작용할 수 있습니다.clipboard.SetText UserName
:SetText
메서드를 사용하여clipboard
객체에 텍스트를 저장합니다. 여기서UserName
은 저장할 텍스트입니다.UserName
변수가 이전에 정의되어 있어야 하며, 이 변수에 저장된 텍스트가 클립보드에 복사됩니다.clipboard.PutInClipboard
:PutInClipboard
메서드를 사용하여clipboard
객체에 저장된 텍스트를 실제 클립보드에 복사합니다. 이렇게 하면 클립보드에UserName
변수의 내용이 저장되며, 이 텍스트를 다른 애플리케이션에서 붙여넣기를 통해 사용할 수 있습니다.
크롬 드라이버 생성
셀레니움 라이브러리를 사용하여 크롬 드라이버 인스턴스를 생성합니다.
Dim driver As Selenium.ChromeDriver
Set driver = New Selenium.ChromeDriver
Dim driver As Selenium.ChromeDriver
: 여기서는 변수driver
를 선언하고, 데이터 타입으로Selenium.ChromeDriver
를 지정합니다. 이는driver
변수가 Chrome 웹 브라우저를 제어하기 위해 사용될 Selenium WebDriver 인스턴스를 참조하게 됩니다.Set driver = New Selenium.ChromeDriver
: 여기서는driver
변수에 새로운Selenium.ChromeDriver
인스턴스를 할당합니다. 이렇게 하면, 이제driver
변수를 사용하여 Chrome 웹 브라우저를 제어할 수 있게 됩니다.
웹 페이지 로딩 및 대기
크롬 드라이버를 사용하여 웹 페이지를 로드하고, 로딩이 완료될 때까지 대기합니다.
driver.Get "https://nid.naver.com/nidlogin.login"
Application.Wait (Now + TimeValue("0:00:03"))
로그인 정보 입력 및 버튼 클릭
셀레니움 메소드를 사용하여 아이디와 비밀번호 입력란을 찾고 클릭한 후, 클립보드에 저장된 값을 붙여넣습니다. 그리고 로그인 버튼을 클릭합니다.
driver.FindElementById("id").Click
SendKeys "^v"
...
driver.FindElementById("pw").Click
SendKeys "^v"
...
driver.FindElementById("log.login").Click
driver
: Selenium WebDriver의 인스턴스를 나타냅니다. WebDriver는 웹 브라우저를 제어할 수 있는 인터페이스를 제공합니다.FindElementById
: 이 메서드는 주어진 HTML 요소의 ID를 사용하여 웹 페이지에서 특정 요소를 찾습니다.("id")
는 찾고자 하는 요소의 ID 값을 나타냅니다. 메서드 이름에서 알 수 있듯이, 이 함수는 ID 속성을 기반으로 요소를 찾습니다.Click
: 찾은 요소에 대해 클릭 이벤트를 발생시킵니다. 예를 들어, 찾은 요소가 버튼이라면 버튼을 클릭하는 것과 같은 동작을 수행합니다.
추가로 SendKeys 함수를 사용하여 Ctrl + V 키조합으로 붙여넣기를 하는 코드도 포함되어 있습니다.
로그인 완료 대기 및 메모리 정리
로그인이 완료되기를 기다린 후, 사용한 객체를 정리하여 메모리를 해제합니다.
Application.Wait (Now + TimeValue("0:00:05"))
Set driver = Nothing
Set clipboard = Nothing
엑셀 매크로 만들기 – 크롬 네이버 자동 로그인 전체 코드
이제 위에서 설명한 내용을 바탕으로 아래와 같은 전체 예시 코드를 만들 수 있습니다. 엑셀 매크로 만들기 – 크롬 네이버 자동 로그인 전체 코드는 아래와 같습니다.
Sub AutoLoginNaver_Chrome()
' 변수 선언
Dim driver As Selenium.ChromeDriver
Dim UserName As String
Dim Password As String
Dim clipboard As DataObject
' 사용자 이름과 비밀번호 지정
UserName = "아이디"
Password = "비밀번호"
' 클립보드에 아이디와 비밀번호 복사
Set clipboard = New DataObject
clipboard.SetText UserName
clipboard.PutInClipboard
' 크롬 드라이버 객체 생성
Set driver = New Selenium.ChromeDriver
' 네이버 로그인 페이지로 이동
driver.Get "https://nid.naver.com/nidlogin.login"
'대기 시간 3초
Application.Wait (Now + TimeValue("0:00:03"))
' 클립보드에서 아이디 붙여넣기
driver.FindElementById("id").Click
SendKeys "^v"
'대기 시간 3초
Application.Wait (Now + TimeValue("0:00:03"))
' 클립보드에 비밀번호 복사
clipboard.SetText Password
clipboard.PutInClipboard
' 클립보드에서 비밀번호 붙여넣기
driver.FindElementById("pw").Click
SendKeys "^v"
'대기 시간 3초
Application.Wait (Now + TimeValue("0:00:03"))
' 로그인 버튼 클릭
driver.FindElementById("log.login").Click
' 로그인 완료 대기
Application.Wait (Now + TimeValue("0:00:05"))
' 메모리 정리
Set driver = Nothing
Set clipboard = Nothing
End Sub
위의 코드를 실행하면 아래 이미지와 같이 크롬이 나타나면서 상단에 “Chrome이 자동화된 테스트 소프트웨어에 의해 제어되고 있습니다” 라는 안내문이 뜨면서 네이버 자동 로그인이 진행됩니다.
VBA 사용 방법에 대해서는 참고로 마이크로소프트의 VBA 참고 페이지도 도움이 될 것 같습니다.
이번 포스팅에서는 앞선 내용을 기반으로 엑셀 매크로 만들기 – 크롬 웹브라우저를 통한 네이버 자동 로그인 방법에 대해 정리해보았습니다. 우선 네이버 자동 로그인을 위한 참조 설정 방법과 해당 코드에서 사용되는 기본 VBA 문법과 전체 코드를 살펴보았습니다.
앞선 포스팅에서 정리한 엑셀 VBA 관련 글은 아래와 같습니다.