엑셀 리본 메뉴에 매크로 실행 메뉴 추가하기
1. [보기] > 매크로 > 매크로 명열을 눌러 '매크로' 대화상자를 보면 예제 파일에는 실행가능한 2개의 매크로('sb그룹별시트분리','sb행 전체부분선택')가 작성된 상태입니다.
2. 리본 메뉴에 2개의 매크로를 실행하는 명령 단추를 추가하기 위해, Alt + F11 글쇠를 눌러 VB 편집기에서 'mod리본메뉴' 모듈 코드 창에 다음과 같이 리본 메뉴 추가를 위한 프로시저를 작성하세요.
Sub Start그룹별시트분리(button As IRibbonControl)
Call sb그룹별시트분리
End Sub
위 프로시저는 6번에서 'customUI.xml'파일을 통해 추가할 리본 명령인 'Start그룹별시트분리'를 클릭할 때 실제 엑셀에서 실행할 작업을 정의 합니다. 즉, 리본 메뉴에서 'Start그룹별시트분리' 명령을 클릭하면 'sb그룹별시트분리'란 프로시저가 실행됩니다.
Sub Start시트관리(button As IRibbonControl)
Call sb시트관리
End Sub
위는 리본 메뉴에 'Start시트관리'란 명령을 클릭하면 'sb시트관리' 프로시저를 실행합니다.
□ 엑셀2007의 리본 메뉴 수정은 엑셀 통합 문서를 통해 처리하는 것이 아니라 통합 문서 외부의 리본 메뉴를 지원하는 별도의 UI 파일을 수정해야 합니다. UI파일의 역할은 리본 메뉴에 명령 아이콘만 표시하고 해당 명령 아이콘이 클릭될 때 실행 할 프로시저명을 연결합니다. 엑셀 통합 문서에서는 실행될 프로시저면 작성합니다.
3. 엑셀 통합 문서를 저장하고 닫은 다음, 탐색기 창을 통해 메뉴 작업을 위한 빈 폴더를 만들고 그 폴더 안에 엑셀 파일(12-09_리본메뉴사용자정의.xlsm)을 복사한 후 파일명의 확장자 뒤에 '.zip'을 붙여 파일명을 '12-09_리본메뉴사용자정의.xlsm.zip'으로 변경하세요.
□ 엑셀 2007의 파일 형태는 이전 엑셀 파일 형태와는 다르게 xml을 기반으로 압축 형태로 제공되기 때문에 확장자만 zip으로 변경하면 압축을 해제하여 구성 파일들을 확인할 수 있습니다.
4. zip파일로 변경된 파일을 더블클릭하여 압축관리프로그램을 실행하여 압축파일 내용이 표시되면, '_rels'폴더를 3.에서 새로 반든 폴더 위로 드래그하여 압축을 해제하세요.
□ 전체 엑셀 파일에 대한 압축을 해제할 필요는 없기 때문에 수정이 필요한 '_rels' 폴더만 압축을 해제하는 작업입니다.
5. 리본메뉴 사용자 정의를 위해 3. 에서 만든 폴더에 'customUI'란 폴더를 만들고 해당 폴더를 더블클릭하세요.
6. 'customUI'폴더 안에 메모장 프로그램을 사용하여 다음과 같은 텍스트 파일을 작성한 후 파일명을 'customUI.xml'로 저장하세요. 이 코드 내용은 예제 CD 파일의 'customUI.xml'파일을 이용해도 됩니다.
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
리본 메뉴를 수정하기 위한 customUI 문서의 시작을 알려줍니다.
<ribbon>
리본 메뉴의 시작을 알립니다.
<tabs>
리본 메뉴의 하위 메뉴인 탭을 정의하기 위한 표시입니다.
<tab id="Tab1" label="리본추가기능" insertAfterMso="TabView">
리본 메뉴에 새로운 탭을 '보기'(TabView) 탭 뒤로 추가하고 레이블은 '리본추가기능'으로 표시하며, 고유 ID로 'Tab1'을 사용합니다. 고유 ID는 중복이 안되는 고유한 명칭입니다.
<group idMso="GroupMacros" />
윗 줄에서 추가한 탭 안의 그룹으로 리본 메뉴의 '매크로'(GroupMacros) 그룹을 표시합니다. 사용자가 직접 작성하는 그룹이 아난 경우 'idMso'란 키워드를 사용하여 해당 명령이나 그룹의 이름을 사용합니다. 이 그룹은 같은 문에 '/>'가 표시되었기 때문에 별도의 끝 표시를 하지 않아도 됩니다.
<group id="Group1" label="시트 관리">
새 그룹으로 '시트 관리' 그룹을 추가하고 고유ID를 'Group1'로 지정합니다.
<button id="Button1" label="그룹분리" size="large" onAction="Start그룹별시트분리" imageMso="HappyFace" supertip="그룹별 시트 분리" />
윗줄에서 만든 '시트 관리' 그룹에 '그룹분리'란 이름의 명령 단추를 추가합니다. 이 명령 단추의 아이콘은 'Heart' 모양으로 크게 표시하고, 이 단추를 클릭하면 엑셀 문서에 작성된 'Start그룹별시트분리' 매크로 프로시저가 실행됩니다. 마지막 "그룹별 시트 분리" 는 설명글 입니다.
<button id="Button2" label="시트관리" size="normal" onAction="Start시트관리" imageMso="Heart" supertip="시트 정렬 및 삽입 삭제" />
두 번째 단추로 '시트관리'란 이름의 명령 단추를 'HappyFace' 아이콘으로 표시하고 이 단추를 클릭하면 'Start시트관리' 프로시저가 실행되도록 합니다.
</group>
첫 번째 그룹의 끝입니다.
<group id="Group2" label="복사">
두 번째 그룹으로 '복사'를 작성합니다.
<control idMso="Copy" label="복사" size="large" />
기존 리본 메뉴에서 '복사'를 윗줄에서 만든 그룹에 추가합니다.
<control idMso="CopyAsPicture" imageMso="Camera" label="그림복사" size="large" />
기존 리본 메뉴에서 '그림 복사'를 '그림복사'란 이름으로 아이콘 모양을 'Camera'로 지정하여 본 그룹에 추가합니다.
<control idMso="PasteValues" label="값만붙여넣기" />
기존 리본 메뉴에서 '값 붙여넣기'를 '값만붙여넣기'란 이름으로 추가합니다.
<control idMso="PasteAsPicture" label="그림붙여넣기" />
기존 리본 메뉴에서 '그림으로 붙여넣기'를 '그림붙여넣기'란 이름으로 추가합니다.
<control idMso="Calculator" label="계산기" />
기존 리본 메뉴에서 '계산기' 명령을 두 번째 그룹에 추가합니다.
</group>
</tab>
</tabs>
</ribbon>
</customUI>
□ 메모장 프로그램 대신 전문적인 xml 편집 프로그램을 사용해도 됩니다. XML 태그문은 <태그> ~</태그> 형태로 항상 시작과 끝은 알리는 형태로 구성됩니다. 좀 더 자세한 XML 문서 작성 방법과 동작원리에 대해서는 관련 도서나 자료를 이용하세요.
7. '_rels'폴더 안의 '.rels'파일을 메모장 등으로 여세요.
8. '.rels'파일 내용 중 가장 마지막 행의 '</Relationships>' 태그 전에 다음과 같은 내용을 입력하고 저장하세요.
<Relationship Id="rId51" Type="http://schemas.microsoft.com/office/2006/relationships/ui/extensibility" Target="customUI/customUI.xml"/>
사용자 리본 메뉴에 대한 정보를 알려줍니다. "rId51"는 고유한 ID 값으로 위의 다른 'Relationship' ID와 중복되지 않아야 합니다. 중복되는 경우 뒤의 숫자를 임의로 변경하면 됩니다.
9. '12-09_리본메뉴사용자정의.xlsm.zip' 파일을 더블클릭으로 열어놓은 상태에서, '_rels' 폴더와 'customUI' 폴더를 '12-09_리본메뉴사용자정의.xlsm.zip' 압축 창 위로 드래그하여 압축 파일 내용에 추가하세요.
10. 압축 프로그램에 따라 현재 파일에 다할지 여부를 묻는 대화상자가 나타나면 '현재 파일에 더하기'를 선택하고 <확인>을 클릭하세요. '파일 바꾸기 확인' 대화상자가 표시되면 '덮어쓰기'를 선택하고 <확인>을 클릭하세요. 프로그램종유에 따라 이 화면이 안 나타날 수도 있습니다.
11. 이제 '12-09_리본메뉴사용자정의.xlsm.zip' 파일의 파일명 뒤의 '.zip'을 지우고 다시, '12-09_리본메뉴사용자정의.xlsm'으로 만드세요.
12. '12-09_리본메뉴사용자정의.xlsm'파일을 열어 보면 '보기' 탭 뒤로 새로운 탭인 '길벗추가기능' 탭이 표시되고 해당 탭에는 3개의 그룹이 표시됩니다. '시트관리' 명령 단추를 클릭하면 연결된 매크로 프로시저가 실행됩니다.
◈ 리본 메뉴의 명령 단추 이름과 아이콘 찾기
'customUI.xml' 파일을 통해 리본 메뉴를 수정하기 위해서는 기존의 리본 메뉴의 명칭과 아이콘들을 알아야 합니다.
'mso images browser.xlsm' 파일에는 1800여개의 아이콘의 이름과 그림이 정리되어 있습니다. 아이콘 이름을 선택하면 해당 아이콘이 표시됩니다. 이 아이콘을 사용하려면 customUI.xml 파일에서 'imageMso="아이콘이름"'(예:imageMso="Heart") 형태로 사용합니다.
엑셀 2007 리본 메뉴에는 1,700개의 명령들이 있습니다. 그런데 리본 메뉴에 표시되는 명칭과 'customUI.xml' 파일에서 사용할 명령 이름이 다르기 때문에 리본 메뉴의 영문 이름을 알아내기 위해서는 'Excel 옵션' 대화상자의 '사용자 지정' 탭을 이용해야 합니다.'Excel 옵션' 대화상자에서 명령 위로 마우스 포인터를 이동하면 스크린 팁으로 영문 명칭이 표시됩니다.
각 명령에 대한 이름 및 그룹에 대한 정보는 'ExcelRibbonControls.xlsx' 파일을 참조하세요. 'ExcelRibbonControls.xlsx' 파일을 열면 컨트롤 이름과 종류 탭 위치 등에 대해 정리되어 있습니다.