여러 애드 인이 리본을 수정하려고 할 때 Roi-Kyi Bryant의 솔루션에 어려움이 있었습니다. 또한 내 직장 컴퓨터에 대한 관리자 액세스 권한이 없어 Custom UI Editor
. 따라서 나와 같은 보트에있는 경우 Excel 만 사용하여 리본을 사용자 지정 하는 다른 예가 있습니다. 내 솔루션은 Microsoft 가이드 에서 파생되었습니다 .
- 리본을 사용자 지정할 Excel 파일 / 파일을 만듭니다. 필자의 경우 여러 추가 기능이 리본과 상호 작용하는 방법을 보여주기 위해 두 개의
.xlam
파일 Chart Tools.xlam
및을 만들었습니다 Priveleged UDFs.xlam
.
- 방금 만든 각 파일 에 대해 임의의 폴더 이름으로 폴더를 만듭니다 .
- 생성 한 각 폴더 안에
customUI
및 _rels
폴더를 추가 합니다.
- 각
customUI
폴더 안에 customUI.xml
파일을 만듭니다 . 이 customUI.xml
파일은 Excel 파일이 리본과 상호 작용하는 방식을 자세히 설명합니다. Microsoft 가이드의 2 부 에서는 customUI.xml
파일 의 요소를 다룹니다 .
내 customUI.xml
파일은 Chart Tools.xlam
다음과 같습니다.
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" xmlns:x="sao">
<ribbon>
<tabs>
<tab idQ="x:chartToolsTab" label="Chart Tools">
<group id="relativeChartMovementGroup" label="Relative Chart Movement" >
<button id="moveChartWithRelativeLinksButton" label="Copy and Move" imageMso="ResultsPaneStartFindAndReplace" onAction="MoveChartWithRelativeLinksCallBack" visible="true" size="normal"/>
<button id="moveChartToManySheetsWithRelativeLinksButton" label="Copy and Distribute" imageMso="OutlineDemoteToBodyText" onAction="MoveChartToManySheetsWithRelativeLinksCallBack" visible="true" size="normal"/>
</group >
<group id="chartDeletionGroup" label="Chart Deletion">
<button id="deleteAllChartsInWorkbookSharingAnAddressButton" label="Delete Charts" imageMso="CancelRequest" onAction="DeleteAllChartsInWorkbookSharingAnAddressCallBack" visible="true" size="normal"/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
내 customUI.xml
파일은 Priveleged UDFs.xlam
다음과 같습니다.
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" xmlns:x="sao">
<ribbon>
<tabs>
<tab idQ="x:privelgedUDFsTab" label="Privelged UDFs">
<group id="privelgedUDFsGroup" label="Toggle" >
<button id="initialisePrivelegedUDFsButton" label="Activate" imageMso="TagMarkComplete" onAction="InitialisePrivelegedUDFsCallBack" visible="true" size="normal"/>
<button id="deInitialisePrivelegedUDFsButton" label="De-Activate" imageMso="CancelRequest" onAction="DeInitialisePrivelegedUDFsCallBack" visible="true" size="normal"/>
</group >
</tab>
</tabs>
</ribbon>
</customUI>
- 들어 각 파일 당신은 접미사 단계 1에서 만든
.zip
자신의 파일 이름. 제 경우에는, 및 로 이름 Chart Tools.xlam
을 변경 했습니다 .Chart Tools.xlam.zip
Privelged UDFs.xlam
Priveleged UDFs.xlam.zip
- 각
.zip
파일을 열고 _rels
폴더로 이동 합니다. 3 단계에서 만든 폴더에 .rels
파일을 복사합니다 . 텍스트 편집기로 각 파일을 _rels
편집 합니다 .rels
. 로부터 마이크로 소프트 가이드
마지막 <Relationship>
요소와 닫는
<Relationships>
요소 사이에 문서 파일과 사용자 정의 파일 간의 관계를 만드는 줄을 추가합니다. 폴더 및 파일 이름을 올바르게 지정했는지 확인하십시오.
<Relationship Type="http://schemas.microsoft.com/office/2006/
relationships/ui/extensibility" Target="/customUI/customUI.xml"
Id="customUIRelID" />
내 .rels
파일은 Chart Tools.xlam
다음과 같습니다.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
<Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Target="docProps/app.xml"/><Relationship Id="rId2" Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" Target="docProps/core.xml"/>
<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/>
<Relationship Type="http://schemas.microsoft.com/office/2006/relationships/ui/extensibility" Target="/customUI/customUI.xml" Id="chartToolsCustomUIRel" />
</Relationships>
내 .rels
파일은 Priveleged UDFs
다음과 같습니다.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
<Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Target="docProps/app.xml"/><Relationship Id="rId2" Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" Target="docProps/core.xml"/>
<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/>
<Relationship Type="http://schemas.microsoft.com/office/2006/relationships/ui/extensibility" Target="/customUI/customUI.xml" Id="privelegedUDFsCustomUIRel" />
</Relationships>
.rels
각 .zip
파일의 .rels
파일을 이전 단계에서 수정 한 파일로 바꿉니다 .
.customUI
생성 한 폴더를 .zip
파일 / 파일 의 홈 디렉토리에 복사하여 붙여 넣 습니다 .
.zip
생성 한 Excel 파일에서 파일 확장자를 제거합니다 .
.xlam
파일을 만든 경우 Excel로 돌아가서 Excel 추가 기능에 추가합니다.
- 해당하는 경우 각 추가 기능에서 콜백 을 만듭니다 . 4 단계에서는
onAction
버튼에 키워드 가 있습니다 . onAction
키워드를 포함하는 요소가 트리거 될 때, Excel 응용 프로그램이 직접 후 따옴표로 쌌다 서브 루틴 트리거, 나타냅니다 onAction
키워드를. 이를 콜백이라고 합니다. 내 .xlam
파일 CallBacks
에는 콜백 서브 루틴이 포함 된 모듈 이 있습니다.
내 CallBacks
모듈은 Chart Tools.xlam
다음과 같습니다.
Option Explicit
Public Sub MoveChartWithRelativeLinksCallBack(ByRef control As IRibbonControl)
MoveChartWithRelativeLinks
End Sub
Public Sub MoveChartToManySheetsWithRelativeLinksCallBack(ByRef control As IRibbonControl)
MoveChartToManySheetsWithRelativeLinks
End Sub
Public Sub DeleteAllChartsInWorkbookSharingAnAddressCallBack(ByRef control As IRibbonControl)
DeleteAllChartsInWorkbookSharingAnAddress
End Sub
내 CallBacks
모듈은 Priveleged UDFs.xlam
다음과 같습니다.
명시 적 옵션
Public Sub InitialisePrivelegedUDFsCallBack(ByRef control As IRibbonControl)
ThisWorkbook.InitialisePrivelegedUDFs
End Sub
Public Sub DeInitialisePrivelegedUDFsCallBack(ByRef control As IRibbonControl)
ThisWorkbook.DeInitialisePrivelegedUDFs
End Sub
요소마다 다른 콜백 서브 루틴 서명이 있습니다. 버튼의 경우 필수 서브 루틴 매개 변수는 ByRef control As IRibbonControl
입니다. 필수 콜백 서명을 준수하지 않으면 VBA 프로젝트 / 프로젝트를 컴파일하는 동안 오류가 발생합니다. Microsoft 가이드의 3 부 에서는 모든 콜백 서명을 정의합니다.
완성 된 예제는 다음과 같습니다.
마무리 팁
- 추가 기능에서 리본 요소를 공유하려면
idQ
및 xlmns:
키워드를 사용하십시오 . 내 예에서 Chart Tools.xlam
와 Priveleged UDFs.xlam
모두와 요소에 액세스 할 수 있습니다 idQ
들에 동일 ' x:chartToolsTab
과 x:privelgedUDFsTab
. 이 작업을 수행하려면 x:
이 필요하며, customUI.xml
파일 의 첫 번째 줄에 네임 스페이스를 정의했습니다 <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" xmlns:x="sao">
. 섹션 유창 UI를 사용자 정의하는 두 가지 방법 에 마이크로 소프트 가이드는 좀 더 세부 사항을 제공합니다.
- 추가 기능이 Excel과 함께 제공되는 리본 요소에 액세스하도록하려면
isMSO
키워드를 사용합니다 . 섹션 유창 UI를 사용자 정의하는 두 가지 방법 에 마이크로 소프트 가이드는 좀 더 세부 사항을 제공합니다.