배움터  
  HOME > 배움터 > 무료강좌
무료강좌
 
엑셀 2000, 황기성님의 엑셀VBA 12일, Excel 2000


특별강좌 : 엑셀 문서 병합 인쇄 마법사 만들기

▶ 오늘 배울 내용

엑셀 문서 병합 인쇄 마법사 만들기 -2

엑셀에서 마법사라 함은 흔히 서식 파일이나 추가기능을 가리키는 것입니다. 우리는 문서병합인쇄마법사 추가기능으로 만들 예정입니다. 추가기능 파일을 만들기 위해 특별히 요청되는 다른 기능은 없습니다. VBA 모듈을 작성하고, 이 모듈을 실행시킬 수 있는 메뉴나 도구 모음을 추가시킨 뒤, 추가기능 파일로 저장하면 간단하게 추가기능 파일을 만드실 수 있습니다.

오늘은, UserForm이란 것을 이용해, 사용자와 대화식으로 프로그램을 진행할 수 있도록 만들어 보겠습니다(이 UserForm은 사용자 정의 대화 상자, 대화상자, 유저폼, 폼 등의 다양한 명칭으로 불립니다. 여기서는 간단하게 폼이란 명칭으로 UserForm을 부르도록 하겠습니다)

1. 먼저 새 통합 문서를 연 뒤, 트 하나만을 남긴 뒤 나머지 시트는 모두 삭제해 주십시오.(이 마법사 예제는 워크시트에 어떤 데이터도 입력하지 않으므로 불필요한 자원의 낭비를 막기 위해 시트 하나만 남기고 모두 삭제하는 것이 좋습니다. 잘 아시겠지만, 통합문서에는 1개 이상의 워크시트가 반드시 포함되어 있어야 하며, 추가 기능 파일에서도 이것은 마찬가지입니다)
2. 이 파일의 이름을, "문서병합마법사"라고 붙여주십시오.(주의 : 예제 파일을 내려받으셨다면, 다른 경로에서 작업해 주셔야 이름 충돌 에러가 발생하지 않습니다)
3. 도구 메뉴에서 매크로 ☞ Visual Basic Editor를 차례로 선택하거나, Alt + F11키를 눌러 VBA편집기를 여십시오.
4. 삽입(I) ☞ 사용자 정의 폼(U)을 선택하거나, 표준 도구모음에서 사용자 정의 폼(U)을 선택하여 프로젝트에 폼을 삽입합니다.

 

5. 아래와 같은 그림과 같이 UserForm1이란 이름의 폼이 삽입되면서 도구 상자가 함께 나타나게 될 것입니다.

6. 아래 그림과 같이 다중 페이지 컨트롤을 선택한 뒤, 이것을 폼에 삽입하도록 합니다.

폼에 컨트롤을 삽입하는 방법 굳이 설명드리지 않아도 되겠습니다만, 초보분들을 위해 폼에 컨트롤을 삽입하는 방법을 아래와 같은 그림으로 설명드립니다. 폼에 컨트롤 삽입은 간단한 마우스 조작으로 놀랄 만큼 아주 쉽게 이루어집니다.

꼭 생각해 보셔야 할 점 : 이 예제를 계속 따라하시기 전에, 꼭 생각해 보셔야 할 점은, 이 마법사 예제의 밑그림을 먼저 그려보셔야 한다는 것입니다. 전 시간에 마법사 예제 파일에 대한 약간의 설명으로 밑그림을 위한 기본 자료를 제시해 드린 바 있습니다.

프로그램이란 기본적으로

분석 ☞ 설계 ☞ 구현이라는 세 가지 절차와 단계에 거쳐 완성되는 것입니다. 물론 분석하기 전에 어떤 요구와 필요성에 대한 검토가 필요하며, 구현한 뒤에는 개발한 내용을 테스트하고 버그를 수정하는 등의 작업이 뒤따라야 합니다.(이것을 조금 티나게 쓰면, 요구 정의(Requirement Definition) ☞ 분석(Analysis) ☞ 설계(Design) ☞ 구현(Implementation) ☞ 테스트(Test)의 단계를 거치며, 이것은 직선적으로 이루어지는 것이 아니라 여러번의 순환을 거쳐(피드 백을 통해 여러번 점검해 가면서) 완성되게 되는 과정입니다)

여러분들이 비록 전문 프로그래머가 아니며(물론 필자 역시 마찬가지입니다. 저는 여러분이 잘 알고 계시다시피 프로그램과 거리가 멀어도 한참 먼 분야에서 일하고 있습니다), 본격적인 소프트웨어 개발에 뜻을 두지 않으셨다고 하더라도, 효과적인 업무 처리나 엑셀과 같은 프로그램을 통한 사무자동화에 관심이 있다면 위의 절차를 눈여겨 두시길 바랍니다. 우리는 어떤 성과에 집착해 요구나 분석 그리고 설계마저도 젖혀두고 어떤 것을 구현하는 데에 골몰하는 경우가 많습니다. 그래, 어떤 성과물을 빠르게 제출해 내는 데에 성공하는 경우가 있더라도 그것이 장기적으로 축적된 성과로 이어지는 경우는 많지 않습니다. 오래된 속담 하나를 빌면, 나무는 보되 숲은 보지 못하게 될 것입니다.

폼 디자인 : 앞서 우리의 목표가 폼을 이용해 사용자와 대화하는 프로그램의 개발에 있다고 했습니다. 폼의 디자인은 따라서 사용자와 프로그램을 연결하는 주요한 매개입니다. 좋은 디자인은 사용자로 하여금 직관적으로 사용법을 알게하여 자연스럽게 원하는 결과에 도달하게 만들어 줍니다. 더불어 사용자로부터 넘겨받은 입력 사항 중 필수적인 사항이 누락되지 않았는지 원하는 형식의 자료인지를 점검할 수 있도록 하는 것도 빼놓지 않아야 할 부분입니다.

먼저 멀티 페이지의 첫번째 페이지에 아래와 같이 세개의 레이블과 세 개의 레프에디트 컨트롤 그리고 하나의 체크 박스 컨트롤을 배치합니다. 레이블에는 각기 caption 속성을 출력할 범위, 목록 범위, 연결된 셀 범위로 변경해줍니다.

크기에 관련된 속성을 제외한 다른 속성은 변경하지 않고, 레이블 컨트롤의 SpecialEffect 속성만을 3으로 변경합니다.(만약 속성창이 보이질 않는다면, 보기 ☞ 속성 창을 선택하시거나 F4키를 누르십시오)

만약 도구 상자에 RefEdit컨트롤 항목이 없다면 도구 상자에 컨트롤 추가하기를 참고하여 도구 상자에 RefEdit컨트롤을 삽입하십시오

멀티페이지의 두번째 페이지에 아래와 같이 각각의 컨트롤을 삽입하십시오.(프레임 1개, 옵션 버튼 2개, 레이블 4개, 스핀 단추 4개, 텍스트 상자 4개, 확인란(체크 박스) 1개 그리고 두 개의 명령 단추) 주의! 프레임 컨트롤을 맨 먼저 삽입한 뒤, 이 위에 나머지 컨트롤을 배치하십시오.)

Caption 속성을 옵션버튼에는 모두(A), 일부(G), 레이블에는 각기 시작, 끝, 매수, 증가라고, 확인란(체크박스)는 열결할 셀에 일련번호 넣기라고  변경합니다. 명령 단추는 미리보기(V) 그리고 인쇄하기(P)라는 캡션 속성을 부여합니다.

그리고 다중 페이지 아래에 각기 ?, <<병합(M), 인쇄(N)>>, 취소(X)라는 캡션을 단 명령 단추를 일렬로 삽입합니다. 그리고 아래와 같이 각각의 컨트롤에 이름을 붙여줍니다.

opbAll ◀ OptionButton
opbSelect ◀ OptionButton
txtStart ◀ TextBox
txtEnd ◀ TextBox
spbStart ◀ SpinButton
spbEnd ◀ SpinButton
txtStep ◀ TextBox
spbStep ◀ SpinButton
txtCount ◀ TextBox
spbCount ◀ SpinButton
cmdPreview ◀ CommandButton
cmdPrint ◀ CommandButton
chkNum ◀ CheckBox
cmdHelp ◀ CommandButton
cmdPre ◀ CommandButton
cmdNext ◀ CommandButton
cmdCancel ◀ CommandButton
각각의 컨트롤에 이름을 붙이거나 변수에 이름을 부여할 때 각각의 컨트롤 또는 변수의 형에 따라 접두어를 붙이는 방법을 흔히 헝가리안 표기법이라고 합니다. 이름이 길흉화복을 결정한다는 성명학을 저는 믿지 않습니다만, 프로그램의 편의를 위하여 알아보기 쉽게 그리고 기억하기 쉽게 이름을 붙이는 일은 대단히 필요하고 중요한 일입니다. VB는 플그래밍할 때 대소문자를 구분하지 않습니다만, 위에서 보다시피 저는 각각의 컨트롤 이름 가운데 중간에 한 글자씩은 꼭 대문자로 표기하였습니다.(어떤 사람은 재미 있게도 이런 표기법을 낙타형 표기법이라고 부릅니다) 이렇게 이름을 짓는 것이 제 프로그래밍 습관이기 한데요, 이런 표기방법의 이점은 코딩할 때 올바로 컨트롤의 이름을 입력하면 자동으로 대문자로 변경되므로 입력의 오류를 크게 줄일 수 있다는 것입니다. 구태여 제 방법을 그대로 하시라고 권해드리지는 않겠습니다만, 좋은 프로그래밍 습관을 들이시는 것은 중요한 일이란 점은 다시 말씀드리겠습니다.

도구 상자에 컨트롤 추가하기 도구 상자에 추가로 필요로 하는 컨트롤을 아래와 같은 방법으로 삽입할 수 있습니다. 도구 상자에 마우스를 위치시킨 다음, 오른쪽 마우스 버튼을 눌러 빠른 메뉴를 부릅니다. 추가 커트롤 목록을 선택합니다.

추가 가능한 컨트롤 목록이 나타나면, 필요로 하는 컨트롤에 체크 한 뒤 확인을 누릅니다

목록 상자에 추가 컨트롤이 삽입됩니다.

목차 | 이전