xlmerge

*xlmerge*​는 여러 개의 엑셀 파일과 시트를 하나로 합쳐 주는 프로그램입니다.
독립적으로 실행할 수도 있고, 엑셀의 부가 프로그램(Addin)으로 설치하여 실행할 수도 있습니다. 만약 python이 이미 설치되어 있다면 소스 코드를 다운받아 소스코드에 포함된 setup.cfg 파일을 이용하여 패키지를 만들어 설치할 수도 있습니다.

Windows 10, Excel 2010 버전에서 테스트를 했습니다.

설치

오른 쪽 Release 링크에 있는 설치파일(xlmerge-<version>_Setup.exe)을 내려 받아 실행하면 됩니다. Windows에서 알 수 없는 파일이라고 실행을 막는 화면이 뜰 수도 있는데 안심하셔도 됩니다. 추가정보를 눌러 실행 버튼을 선택합니다.

주의: 만약 열려 있는 엑셀 프로그램이 있다면 설치 전 모두 닫아야 합니다.

xlmerge는 python으로 작성되었습니다. 사용자가 별도로 python을 설치할 필요가 없도록 xlmerge 설치파일에는 python 인터프리터와 필요한 라이브러리가 포함되어 있어 생각보다 설치되는 파일이 많습니다.

설치과정에서 아래 그림에서 처럼 추가 모듈인 Excel Addin 을 설치할 지 여부를 선택할 수 있습니다.
Addin을 설치하게 되면 엑셀에서 바로 xlmerge를 실행할 수 있도록 메뉴에 “추가 기능”이라는 항목이
생기고 리본 메뉴에서도 xlmerge를 실행할 수 있는 아이콘 버튼이 추가됩니다.

docs/images/setup.PNG

docs/images/addin.PNG

설정

엑셀은 보안 때문에 기본적으로 매크로 실행이 불가능하게 설정되어 있습니다.
xlmerge는 시트에 버튼을 넣는다든가 유효성 검사(Validation) 규칙을 설정하기 위해 내부적으로 매크로를
사용하기 때문에 매크로 사용을 가능하게 해주어야 작동 합니다.
xlmerge에서 사용하는 매크로는 엑셀에서 Alt + F11 키를 누르면 나타나는 VBE에서 확인할 수 있습니다.

설정할 부분은 두 가지 입니다.

  1. VBA 프로젝트 개체 모델에 접근 허용
  2. xlmerge 참조 허용

VBA 프로젝트 개체 모델에 접근 허용

먼저 엑셀을 실행 시킨 다음 파일 메뉴 – 옵션 항목으로 들어갑니다.
왼쪽 사이드 바에서 “보안 센터”를 선택한 후 오른 쪽 “보안센터 설정” 버튼을 클릭하고, 다시 한번
왼쪽 “매크로” 선택, 오른 쪽에서 “VBA 프로젝트 개체 모델에 안전하게 접근할 수 있음”을 체크해 줍니다.

docs/images/sec.PNG
docs/images/sec_setting.PNG

xlmerge 참조 허용

파일 메뉴 – 옵션 항목의 왼쪽 사이드 바에서 “추가 기능”을 선택한 후 오른 쪽에서 맨 아래에 있는
“이동” 버튼을 클릭합니다. 사용할 수 있는 추가 기능이 나타나는데 xlmerge를 체크해 주면 됩니다.

docs/images/additional.PNG

사용

설치 폴더(디폴트: %LOCALAPPDATA%\xlemrge)에 있는 xlmerge.exe를 실행하거나, Addin을 설치하였다면 엑셀을 실행하여 “추가기능” 메뉴에서
“일반” 아이콘을 클릭합니다.
병합은 파일 선택, 머리글(Header) 수집/조정 단계를 거쳐 이루어 집니다.

파일 선택 단계

xlmerge를 실행하면 머리글을 수집할 엑셀 시트가 하나 열리고, 파일을 선택할 수 있는 대화상자가 표시됩니다.
ctrl 키와 shift 키를 이용하여 여러 개의 파일을 선택할 수 있습니다.

머리글 수집/조정 단계

파일 선택 후 xlmerge는 파일에서 각각의 엑셀 시트를 대상으로 일부분(기본값 10행X10열)를 읽어와 보여줍니다.

docs/images/headerSelector.PNG

사용자가 표시된 내용에서 머리글을 선택(클릭)하면 선택된 머리글은 “머리글 수집 시트(Headers)”에 한 줄씩 복사됩니다.
마지막 시트까지 머리글 수집이 끝나고 “마침” 버튼을 클릭하면 머리글 수집 시트 마지막에 “병합 시작”이라는 버튼이 생성됩니다.
왼쪽에 노란색으로 표시되는 3개 열은 xlmerge가 병합작업에 사용하는 정보이므로 수정하면 안됩니다.

docs/images/headerSheet.PNG

이제 사용자의 작업이 좀 필요합니다. 머리글 수집 시트는 생성될 병합 시트의 설계도와 같습니다.
수집된 머리글의 형식과 순서가 모두 동일하다면 모르겠지만–그렇다면 굳이 이런 프로그램이 필요없을 겁니다.–, 그렇지 않다면
머리글의 열(Column) 순서를 조정하여 생성될 병합 시트의 열 순서를 원하는 대로 맞추어야 합니다.
예를 들어, 시트 A에는 ‘이름’이 B열에 있고, 시트 B에는 ‘이름’이라는 열은 없지만 같은 내용인 ‘성명’이 ‘C’열에 있다면,
시트 A의 ‘이름’열을 같은 행의 C열로 옮기든지(잘라내기 & 붙이기), 시트 B의 ‘성명’열을 같은 행의 B열로 옮기는 겁니다.
참고로 잘라내기 & 붙이기 외에도 해당 셀을 클릭하면 옆에 나타나는 드롭다운 리스트에서 다른 제목 열을 선택할 수도 있습니다.

서로 맞는 항목이 없다면 공백으로 두어도 되고 필요 없는 열은 삭제하여도 됩니다. 예컨대, 시트 C에는 이름이나 성명에 해당하는
열이 없다면 시트 C의 해당 열을 공백으로 비워 둘 수 있습니다.
주의할 점은 제목 열의 위치를 같은 행 내에서 바꾸거나 삭제하는 것은 되지만 내용(값)을 수정해서는 안된다는 점입니다.
즉, 시트A의 B열 셀 내용(값)을 ‘이름’에서 ‘성명’으로 바꾸면 안됩니다.

이렇게 머리글 수집 시트의 열 조정을 마치고 “병합 시작” 버튼을 클릭하면 병합(Merge) 시트가 생성되고 병합된 데이터가 이 시트에 기록됩니다.
데이터가 많으면 당연히 시간이 좀 걸립니다.

삭제

먼저 엑셀의 보안 설정을 원상 복구하신 후에 xlmerge 설치 폴더 내에 있는 uninstall.exe를 실행하십시오.

Change Log

  • [version 1.0] Initial version

GitHub

View Github