엑셀 VBA 시트합치기 | 시트 병합 프로그램 만들기 :: 퀵 VBA 3강

예제파일E-Book 교재
첨부파일에 이상이 생겼을 경우, 1:1 문의하기로 연락주시면 신속히 해결해드리겠습니다. 

관련강의 살펴보기

엑셀 VBA 파일 합치기 모듈 :: 엑셀 파일병합 프로그램
엑셀 VBA 파일 합치기 모듈 :: 엑셀 파일병합 프로그램
예제파일 E-Book 교재 첨부파일에 이상이 생겼을 경우, 1:1 문의하기로 연락주시면 신속히 해결해드리겠습니다.  관련강의 살펴보기 관련 기초내용 포스트 | by 오빠두엑셀 1 ...

관련 기초내용 포스트 | by 오빠두엑셀

VBA 리스트박스 값 선택여부 PNG
엑셀 isListBoxSelected 함수 사용법 :: :: 리스트박스 선택여부
예제파일 예제파일은 매크로가 포함되어 있습니다. 예제파일 실행 후 '컨텐츠 포함' 버튼을 클릭하여 매크로를 활성화합니다. 매크로를 활성화하는 방법은 '예제파일 매크로 활성화 ...

1. 사용자 정의 폼 추가하기

예제파일에서 키보드 Alt + F11키로 VBA 편집기를 실행합니다. [삽입] – [사용자 정의 폼]을 추가한 뒤, 아래와 같이 유저폼에 각 컨트롤을 추가합니다.

1. 사용자 정의 폼 설정

원하는 시트를 선택후 병합하기 위해 사용자 정의폼을 생성합니다.

2. 사용자 정의 폼 초기화 명령문 작성 (Userform_Initialize)

사용자 정의 폼이 처음 실행되었을 시, 현재 통합문서에 존재하는 워크시트를 리스트박스에 출력하기 위한 명령문을 작성합니다. 유저폼안에 아래 명령문을 복사하여 붙여넣기 합니다.

3. 시트 합치기 VBA 명령문 작성

3-A. 변수 설정

아래와 같이 변수를 설정합니다.

  • WB, WS : 사용중인 통합문서와 내용을 병합할 워크시트입니다.
  • Rng : 각 시트에서 병합을 위해 붙여넣기 할 대상 범위입니다.
  • newWS : 시트 병합을 위하여 새로 생성되는 워크시트입니다.
  • i : For 문 / For Each문을 반복을 위한 정수값입니다.
  • j : 새로운 워크시트에 붙여넣기 할 시작셀 행번호입니다.
  • endCol, endRow : 각 시트의 마지막 행/열 번호입니다.

3-B. 오류 처리

본격적인 시트 합치기 명령문을 실행하기 전, 오류 방지를 위해 아래 2가지 오류를 처리합니다.

  1. 리스트박스에서 아무런 항목도 선택되지 않은 채 사용자가 버튼을 클릭했을 경우
  2. 기존에 '시트병합' 시트가 존재할 경우

3-C. 새로운 워크시트 생성 및 머리글 입력

각 시트의 내용을 병합할 새로운 워크시트를 생성한 뒤, 머리글을 입력합니다.

3-D. 시트 병합

리스트박스의 항목을 하나씩 돌려가며, 선택된 항목이 있는지 확인합니다.

만약 항목이 선택되어 있을 시, 해당 시트에서 마지막 행 및 마지막 열 번호를 받아 시트의 마지막 셀 위치를 확인합니다. 이후 복사/붙여넣기 할 범위를 지정한 뒤 새로 생성한 '시트병합' 시트에 내용을 붙여넣기 합니다.

엑셀 VBA isListBoxSelected 함수 관련 포스트 바로가기 >>

엑셀 VBA 시트 마지막 행/열 번호 찾기 관련 포스트 바로가기 >>

3-E. 시트 합치기 완료 안내메세지 출력

시트 병합이 완료되었다는 안내메세지를 출력한 뒤, 유저폼을 종료합니다.

3-F. 보조 함수/명령문 입력

보조 함수 및 명령문을 추가합니다. 해당 함수 및 명령문에 대한 자세한 설명은 오빠두 홈페이지에서 관련 포스트를 참고하세요.

4. 유저폼 불러오기 단축키 설정

유저폼을 더욱 쉽게 불러올 수 있도록 단축키를 설정합니다. VBA 편집기에서 [삽입] – [모듈] 로 새로운 모듈을 추가한 뒤, 아래 명령문을 복사하여 붙여넣기 합니다.

이후 엑셀 시트로 돌아온 뒤, 상단의 [개발도구] – [매크로] 를 클릭하여 방금 생성한 'Merge_sheet' 명령문을 선택한 뒤 [옵션]에서 바로가기키 단축키를 설정합니다.

만약 엑셀에서 개발도구가 보이지 않을 경우, 아래 관련 포스트를 참고하세요.

엑셀 개발도구 활성화 방법 포스트 바로가기 >>

2. 매크로 바로가기 키 설정

유저폼을 불러오기 위한 바로가기키를 지정합니다.

5. 강의에 사용된 전체 VBA 명령문

5-A. 유저폼 명령문

5-B. 모듈 명령문

강의가 도움 되셨으면 좋아요와 댓글 부탁드려요! 여러분의 소중한 댓글은 강의제작에 큰 힘이 됩니다.
엑셀 공부는 오빠두엑셀과 함께하세요! #엑셀은오빠두

별점주기 (5 / 2)

7
댓글 남기기

avatar
3 Comment Thereads
4 Thread replies
3 팔로워
 
가장 좋아요가 많은 댓글
가장 인기많은 댓글
5 작성자
하늬돌이김훈오빠두엑셀오빠두엑셀김희준 최근 작성자
  현재 페이지 댓글알림 신청  
알림 설정
김희준
손님
김희준

시트 병합이후 병합된 시트내에서의 특정열의 중복확인을 하고 싶습니다.
VBA 명령문을 어떻게 작성해야 할까요?

오빠두엑셀
손님

안녕하세요? 오빠두엑셀이에요 ^_^* 예를들어, 시트 A + 시트 B 를 병합한 뒤 'A열'에 중복된 데이터가 있는지 확인을 하고 싶으신건가요?:) 반환되는 동작에 따라 달라집니다. 예를 들어, 중복된 값이 있을 경우 중복된… 더보기 »

김희준
손님
김희준

감사합니다! 첨부해주신 명령문을 Private Sub btnSubmit_Click() 끝에 추가하니, 잘 작동되는것을 확인 할 수 있었습니다. 추가로 반환되는 동작을 변경하고 싶어서 댓글 남깁니다. 반환되는 동작을 특정열에서 중복확인 후 중복되는 값이 있다면, 새로운… 더보기 »

김훈
구독자
김훈
별점주기 :
     

안녕하세요 늘 좋은강의 감사합니다 🙂
다름이 아니라 혹시 완성파일도 받아볼 수 있을까 해서 문의 남깁니다 ㅎㅎ
완성파일과 예제랑 비교하면서 하나씩 따라해보면 좋을 것 같아서요!!

하늬돌이
Member
하늬돌이
별점주기 :
     

좋은 자료 감사해요. 잘 활용하고 있습니다.