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
.xlamfile, Chart Tools.xlamdan 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
customUIdan _rels.
- Di dalam setiap
customUIfolder, buat customUI.xmlfile. The customUI.xmlrincian file bagaimana Excel file berinteraksi dengan pita. Bagian 2 dari panduan Microsoft mencakup elemen di dalam customUI.xmlfile.
customUI.xmlFile saya untuk Chart Tools.xlamterlihat 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.xmlFile saya untuk Priveleged UDFs.xlamterlihat 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
.zipuntuk nama file mereka. Dalam kasus saya, saya mengganti nama Chart Tools.xlammenjadi Chart Tools.xlam.zip, dan Privelged UDFs.xlammenjadi Priveleged UDFs.xlam.zip.
- Buka setiap
.zipfile, dan navigasikan ke _relsfolder. Salin .relsfile ke _relsfolder 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" />
.relsFile saya untuk Chart Tools.xlamterlihat 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>
.relsFile saya untuk Priveleged UDFsterlihat 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
.relsfile di setiap .zipfile dengan .relsfile / file yang dimodifikasi pada langkah sebelumnya.
- Salin dan tempel
.customUIfolder yang Anda buat ke direktori home dari .zipfile / files.
- Hapus
.zipekstensi file dari file Excel yang Anda buat .
- Jika Anda telah membuat
.xlamfile, kembali ke Excel, tambahkan file ke add-in Excel Anda.
- Jika memungkinkan, buat panggilan balik di setiap add-in Anda. Pada Langkah 4, ada
onActionkata kunci di tombol saya. Kata onActionkunci menunjukkan bahwa, ketika elemen yang mengandung dipicu, aplikasi Excel akan memicu sub-rutin yang dibungkus dalam tanda kutip tepat setelah onActionkata kunci. Ini dikenal sebagai panggilan balik . Dalam .xlamfile saya , saya memiliki modul yang disebut di CallBacksmana saya telah memasukkan sub-rutinitas panggilan balik saya.

CallBacksModul saya untuk Chart Tools.xlamtampilannya
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
CallBacksModul saya untuk Priveleged UDFs.xlamtampilannya
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
idQdan xlmns:. Dalam contoh saya, Chart Tools.xlamdan Priveleged UDFs.xlamkeduanya memiliki akses ke elemen idQsama dengan x:chartToolsTabdan x:privelgedUDFsTab. Agar ini berfungsi, x:diperlukan, dan, saya telah menetapkan namespace-nya di baris pertama customUI.xmlfile 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
isMSOkata kunci. Bagian Dua Cara Menyesuaikan UI Lancar di panduan Microsoft memberikan beberapa detail lebih lanjut.