사용자 리본 만들기

XML 기본 구조

노만e 2025. 3. 18. 06:39

엑셀 리본을 커스터마이징하는 XML 코드의 기본 구조는 다음과 같습니다.

<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>

기능:

예제 코드:


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 매크로 실행

이제 원하는 대로 엑셀 리본 메뉴를 만들 수 있습니다! 🚀