엑셀 리본을 커스터마이징하는 XML 코드의 기본 구조는 다음과 같습니다.
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon>
<tabs>
<tab id="customTab" label="사용자 탭">
<group id="customGroup" label="사용자 그룹">
<button id="customButton" label="클릭하세요"
imageMso="HappyFace"
onAction="myMacro"/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
|
2. 주요 XML 명령어와 기능
1) <customUI>
기능:
- 리본 UI를 사용자 지정하기 위한 최상위 태그입니다.
- xmlns="http://schemas.microsoft.com/office/2006/01/customui"는 필수 속성입니다.
예제 코드:
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
</customUI>
|
2) <ribbon>
기능:
- 엑셀 리본을 정의하는 태그입니다.
- <ribbon> 태그 안에 <tabs> 태그를 넣어 탭을 추가할 수 있습니다.
예제 코드:
<ribbon>
<tabs>
<!-- 여기에 사용자 탭 추가 -->
</tabs>
</ribbon>
|
3) <tabs>
기능:
- 리본의 탭을 포함하는 컨테이너 역할을 합니다.
- <tab> 태그를 포함할 수 있습니다.
예제 코드:
<tabs>
<tab id="customTab" label="사용자 탭">
<!-- 그룹 추가 -->
</tab>
</tabs>
|
4) <tab>
기능:
- 새 탭을 추가하는 역할을 합니다.
- id: 탭의 고유 식별자 (영문으로 작성)
- label: 탭에 표시될 이름
예제 코드:
<tab id="customTab" label="내 리본 메뉴">
<group id="customGroup" label="내 도구">
<!-- 버튼 추가 -->
</group>
</tab>
|
5) <group>
기능:
- 탭 내부에 그룹을 추가하는 역할을 합니다.
- 여러 개의 <button>이나 <menu> 등을 포함할 수 있습니다.
예제 코드:
<group id="customGroup" label="기능 그룹">
<button id="btn1" label="버튼1" onAction="Macro1"/>
<button id="btn2" label="버튼2" onAction="Macro2"/>
</group>
|
6) <button>
기능:
- 리본에서 클릭할 수 있는 버튼을 생성합니다.
- id: 버튼의 고유 식별자
- label: 버튼에 표시될 텍스트
- imageMso: 기본 제공되는 아이콘 사용
- onAction: 버튼 클릭 시 실행할 VBA 매크로
예제 코드:
<button id="customButton" label="클릭하세요"
imageMso="HappyFace"
onAction="myMacro"/>
|
💡 imageMso 속성
- 엑셀에서 제공하는 기본 아이콘을 사용할 수 있습니다.
- 예: "Save", "Cut", "Paste", "HappyFace"
7) <menu>
기능:
- 여러 개의 버튼을 포함하는 드롭다운 메뉴를 생성합니다.
예제 코드:
<menu id="customMenu" label="메뉴">
<button id="btnA" label="옵션 A" onAction="MacroA"/>
<button id="btnB" label="옵션 B" onAction="MacroB"/>
</menu>
|
8) <splitButton>
기능:
- 하나의 메인 버튼과 추가 옵션 버튼을 함께 제공하는 버튼을 생성합니다.
예제 코드:
<splitButton id="customSplit">
<button id="mainButton" label="기본 동작" onAction="MainMacro"/>
<menu id="subMenu">
<button id="subButton1" label="옵션1" onAction="SubMacro1"/>
<button id="subButton2" label="옵션2" onAction="SubMacro2"/>
</menu>
</splitButton>
|
9) <toggleButton>
기능:
- 버튼을 토글(켜기/끄기)할 수 있는 형태로 만듭니다.
- getPressed="GetToggleState"을 사용하여 VBA에서 버튼 상태를 제어할 수 있습니다.
예제 코드:
<toggleButton id="toggleBtn" label="토글 버튼"
onAction="ToggleMacro"
getPressed="GetToggleState"/>
|
10) <editBox>
기능:
- 사용자가 직접 입력할 수 있는 텍스트 상자를 추가합니다.
예제 코드:
<editBox id="inputBox" label="입력" onChange="MyTextChanged"/>
|
11) <gallery>
기능:
- 여러 개의 아이콘을 선택할 수 있는 갤러리 형식 버튼을 만듭니다.
예제 코드:
<gallery id="customGallery" label="아이콘 선택">
<item id="item1" label="옵션1" imageMso="SmileFace" onAction="SelectIcon1"/>
<item id="item2" label="옵션2" imageMso="SadFace" onAction="SelectIcon2"/>
</gallery>
|
12) <comboBox>
기능:
- 드롭다운 목록에서 사용자가 선택할 수 있는 옵션을 제공합니다.
예제 코드:
<comboBox id="customCombo" label="옵션 선택" onChange="ComboChanged">
<item id="option1" label="옵션 A"/>
<item id="option2" label="옵션 B"/>
</comboBox>
|
3. VBA와 XML 연결 예제
VBA에서 XML에서 정의한 onAction 이벤트를 처리할 수 있습니다.
VBA 예제 코드
Sub myMacro()
MsgBox "버튼이 클릭되었습니다!"
End Sub
Function GetToggleState(control As IRibbonControl) As Boolean
GetToggleState = True ' 기본적으로 켜진 상태
End Function
Sub MyTextChanged(control As IRibbonControl, text As String)
MsgBox "입력한 내용: " & text
End Sub
|
4. 결론
- 기본 UI 사용자화: <button>, <menu>, <group> 등을 사용하여 원하는 리본 UI를 제작 가능
- 고급 기능 추가: <toggleButton>, <comboBox>, <editBox> 등을 활용하여 인터랙티브 UI 생성 가능
- VBA와 연결: onAction을 통해 VBA 매크로 실행
이제 원하는 대로 엑셀 리본 메뉴를 만들 수 있습니다! 🚀