Saya mengalami kesulitan dengan solusi Roi-Kyi Bryant ketika beberapa add-in mencoba memodifikasi pita. Saya juga tidak memiliki akses admin di komputer kerja saya, yang mengesampingkan pemasangan Custom UI Editor
. Jadi, jika Anda berada di perahu yang sama dengan saya, berikut adalah contoh alternatif untuk menyesuaikan pita hanya dengan menggunakan Excel. Catatan, solusi saya berasal dari panduan Microsoft .
- Buat file / file Excel yang pita ingin Anda sesuaikan. Dalam kasus saya, saya telah membuat dua
.xlam
file, Chart Tools.xlam
dan Priveleged UDFs.xlam
, untuk mendemonstrasikan bagaimana beberapa add-in dapat berinteraksi dengan Ribbon.
- Buat folder, dengan nama folder apa saja, untuk setiap file yang baru saja Anda buat.
- Di dalam setiap folder yang Anda buat, tambahkan folder
customUI
dan _rels
.
- Di dalam setiap
customUI
folder, buat customUI.xml
file. The customUI.xml
rincian file bagaimana Excel file berinteraksi dengan pita. Bagian 2 dari panduan Microsoft mencakup elemen di dalam customUI.xml
file.
customUI.xml
File saya untuk Chart Tools.xlam
terlihat seperti ini
<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
File saya untuk Priveleged UDFs.xlam
terlihat seperti ini
<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>
- Untuk setiap file yang Anda buat pada Langkah 1, akhiran a
.zip
untuk nama file mereka. Dalam kasus saya, saya mengganti nama Chart Tools.xlam
menjadi Chart Tools.xlam.zip
, dan Privelged UDFs.xlam
menjadi Priveleged UDFs.xlam.zip
.
- Buka setiap
.zip
file, dan navigasikan ke _rels
folder. Salin .rels
file ke _rels
folder yang Anda buat pada Langkah 3. Edit setiap .rels
file dengan editor teks. Dari panduan Microsoft
Di antara <Relationship>
elemen terakhir dan elemen penutup
<Relationships>
, tambahkan garis yang membuat hubungan antara file dokumen dan file kustomisasi. Pastikan Anda menentukan folder dan nama file dengan benar.
<Relationship Type="http://schemas.microsoft.com/office/2006/
relationships/ui/extensibility" Target="/customUI/customUI.xml"
Id="customUIRelID" />
.rels
File saya untuk Chart Tools.xlam
terlihat seperti ini
<?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
File saya untuk Priveleged UDFs
terlihat seperti ini.
<?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>
- Mengganti
.rels
file di setiap .zip
file dengan .rels
file / file yang dimodifikasi pada langkah sebelumnya.
- Salin dan tempel
.customUI
folder yang Anda buat ke direktori home dari .zip
file / files.
- Hapus
.zip
ekstensi file dari file Excel yang Anda buat .
- Jika Anda telah membuat
.xlam
file, kembali ke Excel, tambahkan file ke add-in Excel Anda.
- Jika memungkinkan, buat panggilan balik di setiap add-in Anda. Pada Langkah 4, ada
onAction
kata kunci di tombol saya. Kata onAction
kunci menunjukkan bahwa, ketika elemen yang mengandung dipicu, aplikasi Excel akan memicu sub-rutin yang dibungkus dalam tanda kutip tepat setelah onAction
kata kunci. Ini dikenal sebagai panggilan balik . Dalam .xlam
file saya , saya memiliki modul yang disebut di CallBacks
mana saya telah memasukkan sub-rutinitas panggilan balik saya.
CallBacks
Modul saya untuk Chart Tools.xlam
tampilannya
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
Modul saya untuk Priveleged UDFs.xlam
tampilannya
Opsi Eksplisit
Public Sub InitialisePrivelegedUDFsCallBack(ByRef control As IRibbonControl)
ThisWorkbook.InitialisePrivelegedUDFs
End Sub
Public Sub DeInitialisePrivelegedUDFsCallBack(ByRef control As IRibbonControl)
ThisWorkbook.DeInitialisePrivelegedUDFs
End Sub
Elemen yang berbeda memiliki tanda tangan sub-rutin callback yang berbeda. Untuk tombol, parameter sub-rutin yang diperlukan adalah ByRef control As IRibbonControl
. Jika Anda tidak mengikuti tanda tangan panggilan balik yang diperlukan, Anda akan menerima pesan kesalahan saat menyusun proyek / proyek VBA Anda. Bagian 3 dari panduan Microsoft mendefinisikan semua tanda tangan panggilan balik.
Inilah contoh saya yang sudah selesai
Beberapa tip penutup
- Jika Anda ingin add-in untuk berbagi elemen Ribbon, gunakan kata kunci
idQ
dan xlmns:
. Dalam contoh saya, Chart Tools.xlam
dan Priveleged UDFs.xlam
keduanya memiliki akses ke elemen idQ
sama dengan x:chartToolsTab
dan x:privelgedUDFsTab
. Agar ini berfungsi, x:
diperlukan, dan, saya telah menetapkan namespace-nya di baris pertama customUI.xml
file saya <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" xmlns:x="sao">
,. Bagian Dua Cara Menyesuaikan UI Lancar di panduan Microsoft memberikan beberapa detail lebih lanjut.
- Jika Anda ingin add-in mengakses elemen Pita yang dikirimkan dengan Excel, gunakan
isMSO
kata kunci. Bagian Dua Cara Menyesuaikan UI Lancar di panduan Microsoft memberikan beberapa detail lebih lanjut.