사용자 리본 만들기

엑셀 리본 XML 참고 사항

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

엑셀 리본 XML 참고 사항

엑셀 리본을 XML로 커스터마이징할 때 반드시 알아야 할 사항들을 정리했습니다.


1. XML 파일 작성 및 편집 방법

  • RibbonX Editor 또는 텍스트 편집기 (메모장++, VS Code) 등을 사용하여 작성합니다.
  • XML을 엑셀 파일에 적용하려면 매크로 사용 통합 문서 (.xlsm, .xlam) 형식이어야 합니다.
  • XML 수정 후, 엑셀을 닫고 다시 열어야 변경 사항이 적용됩니다.

2. XML 기본 규칙

  • <customUI> 태그는 반드시 포함해야 합니다.
  • 모든 태그는 id 속성을 사용하여 고유하게 설정해야 합니다.
  • label 속성을 사용하여 UI에 표시될 이름을 정의합니다.
  • VBA 매크로와 연결하려면 onAction 속성을 사용합니다.
<ribbon>
<tabs>
<tab id="myTab" label="사용자 탭">
<group id="myGroup" label="기능 그룹">
<button id="myButton" label="버튼" onAction="myMacro"/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>

3. 리본 UI 적용 및 오류 해결

  • 엑셀 파일을 .xlsm/.xlam 형식으로 저장해야 합니다.
  • 리본 XML을 변경한 후에는 엑셀을 반드시 다시 실행해야 적용됩니다.
  • onAction으로 연결한 VBA 매크로는 Public Sub로 선언해야 합니다.
Public Sub myMacro(control As IRibbonControl)
MsgBox "버튼 클릭됨!"
End Sub
  • XML 오류가 발생하면 리본 UI가 보이지 않거나 엑셀이 오류를 표시합니다.
  • RibbonX Editor에서 "Validate" 기능을 사용해 오류를 확인하세요.

4. 주요 XML 속성 및 기능

속성
설명
예제
id
고유한 식별자
id="customButton"
label
리본 UI에 표시될 텍스트
label="실행 버튼"
imageMso
기본 제공 아이콘 지정
imageMso="Save"
onAction
VBA 매크로 연결
onAction="RunMacro"
getPressed
버튼의 토글 상태 반환
getPressed="GetToggleState"
onChange
사용자가 입력을 변경했을 때 실행될 매크로
onChange="TextChanged"

5. 리본 UI 요소별 특징

XML 요소
설명
예제
<button>
일반 버튼을 추가
<button id="btn1" label="클릭" onAction="ClickMacro"/>
<toggleButton>
켜고 끌 수 있는 버튼
<toggleButton id="toggle" label="ON/OFF" getPressed="GetState" onAction="ToggleMacro"/>
<menu>
여러 버튼을 포함하는 드롭다운 메뉴
<menu id="menu1" label="메뉴">
<splitButton>
기본 버튼 + 추가 메뉴 제공
<splitButton id="split1">
<editBox>
사용자가 입력할 수 있는 텍스트 상자
<editBox id="inputBox" label="입력" onChange="TextChanged"/>
<comboBox>
선택 가능한 목록 (드롭다운)
<comboBox id="combo1" label="옵션 선택">
<gallery>
아이콘을 선택하는 갤러리 메뉴
<gallery id="gallery1" label="선택">

6. VBA에서 리본 컨트롤 상태 변경하기

  • VBA에서 리본의 버튼 상태를 변경하려면 IRibbonUI 개체를 사용해야 합니다.
  • 엑셀 시작 시 onLoad을 이용해 IRibbonUI 개체를 저장해야 합니다.
<ribbon>
<tabs>
<tab id="myTab" label="사용자 탭">
<group id="myGroup" label="기능 그룹">
<button id="myButton" label="변경 버튼" onAction="myMacro"/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
Dim gRibbon As IRibbonUI ' 리본 UI 개체 저장
Public Sub RibbonLoaded(ribbon As IRibbonUI)
Set gRibbon = ribbon
End Sub
Public Sub myMacro(control As IRibbonControl)
MsgBox "버튼이 클릭되었습니다!"
gRibbon.Invalidate ' UI 새로고침
End Sub
  • Invalidate 메서드를 사용하면 리본 UI가 새로고침됩니다.
  • onLoad="RibbonLoaded" 속성을 추가해야 합니다.

7. 리본 커스터마이징 팁

Office 기본 아이콘 사용하기 (imageMso)

  • "Save", "Cut", "Copy", "Paste" 등 Microsoft에서 제공하는 아이콘을 사용할 수 있습니다.
  • 아이콘 목록: 공식 문서 참고

VBA에서 리본 UI 동적으로 변경

  • gRibbon.Invalidate를 사용하면 버튼 상태를 변경할 수 있습니다.
  • getPressed, getLabel을 활용하여 동적 UI 변경이 가능합니다.

리본 XML에서 VBA 매크로 오류 방지

  • Public Sub로 선언해야 합니다.
  • control As IRibbonControl 매개변수를 포함해야 합니다.
  • vba
  • Public Sub MyMacro(control As IRibbonControl)

리본 변경 사항을 적용하려면 엑셀을 다시 열기

  • XML을 변경해도 엑셀을 다시 실행해야만 적용됩니다.

8. 자주 발생하는 오류 및 해결 방법

오류
원인
해결 방법
리본이 표시되지 않음
XML 코드에 오류가 있음
RibbonX Editor에서 검증
버튼 클릭 시 VBA 오류
onAction에 연결된 매크로가 없음
Public Sub MacroName(control As IRibbonControl) 형식 확인
아이콘이 안 보임
imageMso 이름이 잘못됨
XML 변경 후 적용 안 됨
엑셀을 다시 열지 않음
엑셀을 닫고 다시 열기

9. 결론

  • 엑셀 리본 XML을 활용하면 UI를 자유롭게 커스터마이징 가능합니다.
  • VBA와 결합하여 동적인 기능을 추가할 수 있습니다.
  • onAction과 Invalidate를 활용하면 인터랙티브 UI 구현 가능합니다.

이제 XML을 활용하여 원하는 엑셀 리본을 직접 만들 수 있습니다! 🚀

추가 질문이 있으면 언제든지 문의하세요. 😊