VBA 팝업창 닫기 - VBA pab-eobchang dadgi

안녕하세요.

URL : https://www.rra.go.kr/ko/license/A_c_search.do#

인증/등록 번호 : R-R-pNd-Smartcattoys (예시로 입력할 인증번호입니다.)

입력하고 '검색'을 클릭하면 '확인'창이 하나 뜹니다. 이 창을 클릭해서 닫아야 결과 페이지로 이동하는데 어떻게 닫는지 모르겠습니다.

Q1. CreateObject("InternetExplorer.Application")로 크롤링 시 닫는 방법

Q2. CreateObject("MSXML2.XMLHTTP")로 크롤링 시 닫는 방법

Q3. Selenium + Chrome Webdriver로 크롤링 시 닫는 방법

'확인'창이라고 불렀는데 정확히 뭐라 부르는지 몰라서요.(Alert, Modal, PopUp...?)

개발자도구(F12)로는 '확인'창 접근이 되지 않아서 .Click이나 Sendkeys 따위로 제어가 안 되는 군요. 먼저 '확인'창으로 포커싱한 후에 어떤 명령을 해야 할 것 같은데 좀 도와주세요.

안녕하십니까 춤추는초코칩입니다.

업무 중에 필요한 엑셀VBA를 기록하고 있습니다.

VBA 팝업창 닫기 - VBA pab-eobchang dadgi

오늘은 엑셀을 파일을 열고 닫는 매크로를 만들어 보겠습니다. 이 기능을 활용하면, 엑셀에서 다른 엑셀 파일을 편집할 수 있습니다.

우선 파일 열기 매크로입니다.

'예제1-1. 파일열기
Sub openExcel()
 
 Application.Workbooks.Open Filename:="C:\Users\cysti\Desktop\openExcel\sampleA.xlsx"

End Sub

 같은 폴더 내에서 파일이 있다면, 아래와 같이 작성하셔도 됩니다.

'예제1-2. 같은 폴더 안에서 파일열기
Sub openExcel()
 
 Application.Workbooks.Open Filename:= ThisWorkbook.Path & "\sampleA.xlsx"

End Sub

 파일 명이 하나만 존재 한다면, 아래와 같이 작성하셔도 됩니다.

'예제1-3. 같은 폴더 안에서 단일 파일명 열기
Sub openExcel()
 
 Application.Workbooks.Open Filename:= ThisWorkbook.Path & "\sampleA"

End Sub

다음은 열린 파일 닫기 매크로입니다.

'예제2-1. 파일 닫기
Sub closeExcel()

 ActiveWorkbook.Close

End Sub

저장하지 않고 파일 닫기 매크로입니다.

'예제2-2. 저장하지 않고 파일 닫기
Sub closeExcel()

 ActiveWorkbook.Close false

End Sub

이전 글에서 대화 상자를 통해 파일을 여는 방법에 대해 알아보았습니다. 이번에는 파일을 닫는 메서드 Close와 새로 엑셀 파일을 만드는 메서드 Add에 대해 알아보겠습니다.

엑셀 VBA 대화상자를 통해 파일 선택하여 불러오기 메서드 - GetOpenFilename

엑셀 VBA 대화상자를 통해 파일 선택하여 불러오기 메서드 - GetOpenFilename

이전 글에서 Workbooks 컬렉션의 파일 읽기 메서드 Open에 대해 알아보았습니다. 이번에는 불러올 파일을 지정하지 않은 상태에서 대화 상자를 통해 선택할 수 있는 메서드 GetOpenFilename에 대해 알아

mr-johndoe.tistory.com

VBA 팝업창 닫기 - VBA pab-eobchang dadgi

1. Close 메서드

  Open 메서드로 파일을 열 수 있듯이 파일을 닫을 수 있는 메서드도 존재하는데, Close 메서드가 파일을 닫을 때 사용하는 메서드입니다.

사용 방법은 다음과 같습니다.

   Workbook.Close 매개변수:=설정값

매개변수에 대해 다음 표로 정리해보았습니다.

매개변수 설 명
SaveChanges 파일을 닫을 때 파일의 저장 여부 설정
Filename 수정된 사항 저장 시 사용할 파일 이름 설정
RouteWorkbook 이메일로 파일 첨부시 해당 메일로 파일을 전송할지 설정

2. Add 메서드

  엑셀 파일을 새로 생성하려면 Workbooks 컬렉션의 Add 메서드를 사용하면 가능합니다. 사용 방법은 다음과 같습니다.

   Workbooks.Add (매개변수)

매개변수에는 새로 생성하는 파일의 형식을 지정합니다. 매개변수에 사용되는 내장 상수는 다음과 같습니다.

내장 상수 설 명
xlWBATChart 차트
xlWBATWorksheet 워크시트
xlWBATExcel4MacroSheet 엑셀 버전 4 매크로
xlWBATExcel4IntlMacroSheet 엑셀 버전 4 국제 매크로

3. 예제로 확인

엑셀을 여시고 엑셀 시트에 ActiveX 버튼 하나를 생성합니다. 버튼 속성에서 Caption에 '새 워크시트'라고 입력합니다. 그리고, 생성한 버튼을 마우스 왼쪽 버튼으로 더블클릭하셔서 코드 창을 엽니다. 코드 창에 다음 코드를 입력합니다.

   Private Sub CommandButton1_Click()

      Workbooks.Add

   End Sub

코드를 입력하시고 생성하신 버튼을 클릭하시면 새 워크시트가 생성됩니다.

버튼을 만드신 엑셀 시트 이름이 '통합 문서1'이므로 '통합 문서 2'라는 이름으로 시트가 생성됩니다.

새로 생성된 워크시트의 시트 수는 sheet1 한개가 생성되었습니다. 이것은 사용하시는 분들 엑셀 설정에 따라 다르게 나타날 것입니다.

새로 워크시트를 생성할 때 생성되는 시트 수 설정은 엑셀 옵션에 들어가시면 변경 가능합니다.

엑셀 메뉴에서 파일-옵션을 클릭하면 엑셀 옵션창이 출력됩니다. ([그림 1] 참조)

VBA 팝업창 닫기 - VBA pab-eobchang dadgi
[그림 1] 엑셀 옵션창

[그림 1]에서 빨간 색으로 표시된 부분이 새 워크시트를 생성할 때 생성되는 시트 수를 설정하는 메뉴입니다. 여기에 원하시는 수를 입력하시면 생성되는 시트 수를 조정할 수 있습니다.

VBA에서 생성되는 시트 수를 조정하려면 SheetsInNewWorkbook 속성을 사용하면 가능합니다. 그러면 새로 생성되는 워크시트의 시트수를 5개로 변경하는 예제를 작성해 보겠습니다.

   Private Sub CommandButton1_Click()

      Dim i As Integer

      i = Application.SheetsInNewWorkbook

      Application.SheetsInNewWorkbook = 5

      Workbooks.Add

      Application.SheetsInNewWorkbook = i

   End Sub

Dim i As Integer

: 정수형 변수 i를 선언하였습니다.

i = Application.SheetsInNewWorkbook

: 변수 i에 기본으로 설정되어 있는 생성 시트 수를 입력합니다. 이는 값을 변경하여 사용 후 원래 상태로 돌려놓기 위한 것입니다.

Application.SheetsInNewWorkbook = 5

: 생성되는 시트 수를 5로 변경하였습니다.

Workbooks.Add

: 새로운 워크 시트을 생성합니다.

Application.SheetsInNewWorkbook = i

:생성되는 시트 수를 원래 값으로 환원시킵니다.

버튼을 클릭하여 코드를 실행하면 새로 워크시트가 생성되면서 시트수는 sheet1 ~ sheet5까지 5개가 생성됩니다.

다음은 워크시트를 닫는 예제입니다. 워크시트에 ActiveX 버튼을 생성하고 Caption에 '워크시트 닫기'라고 입력합니다. 생성한 버튼을 더블 클릭하고 다음 코드를 코드 창에 입력합니다.

   Private Sub CommandButton2_Click()

      On Error Resume Next

      Workbooks.Close

   End Sub

On Error Resume Next

: 에러 발생시 무시하고 다음 코드를 진행하라는 명령입니다.

Workbooks.Close

:현재 활성화된 워크시트를 닫으라는 명령입니다.

버튼을 클릭하시면 워크시트를 저장할 것인지 물어보는 메시지 창이 뜹니다.