Saya mencari cara untuk menambahkan tab kustom di pita Excel yang akan membawa beberapa tombol. Saya menemukan beberapa sumber yang mengatasinya melalui Google tetapi semuanya terlihat cerdik dan sangat rumit.
Apa cara cepat dan sederhana untuk melakukan itu? Saya ingin tab baru dimuat saat VBA saya dimuat ke Excel ..
PEMBARUAN : Saya mencoba contoh ini dari sini tetapi mendapatkan kesalahan "diperlukan objek" pada instruksi terakhir:
Public Sub AddHighlightRibbon()
Dim ribbonXml As String
ribbonXml = "<mso:customUI xmlns:mso=""http://schemas.microsoft.com/office/2009/07/customui"">"
ribbonXml = ribbonXml + " <mso:ribbon>"
ribbonXml = ribbonXml + " <mso:qat/>"
ribbonXml = ribbonXml + " <mso:tabs>"
ribbonXml = ribbonXml + " <mso:tab id=""highlightTab"" label=""Highlight"" insertBeforeQ=""mso:TabFormat"">"
ribbonXml = ribbonXml + " <mso:group id=""testGroup"" label=""Test"" autoScale=""true"">"
ribbonXml = ribbonXml + " <mso:button id=""highlightManualTasks"" label=""Toggle Manual Task Color"" "
ribbonXml = ribbonXml + "imageMso=""DiagramTargetInsertClassic"" onAction=""ToggleManualTasksColor""/>"
ribbonXml = ribbonXml + " </mso:group>"
ribbonXml = ribbonXml + " </mso:tab>"
ribbonXml = ribbonXml + " </mso:tabs>"
ribbonXml = ribbonXml + " </mso:ribbon>"
ribbonXml = ribbonXml + "</mso:customUI>"
ActiveProject.SetCustomUI (ribbonXml)
End Sub
excel
vba
excel-2007
ribbonx
Berdengung
sumber
sumber
Jawaban:
AFAIK Anda tidak bisa menggunakan VBA Excel untuk membuat tab kustom di pita Excel. Namun Anda dapat menyembunyikan / menampilkan komponen pita menggunakan VBA. Selain itu, tautan yang Anda sebutkan di atas adalah untuk MS Project dan bukan MS Excel.
Saya membuat tab untuk Aplikasi / Add-In Excel saya menggunakan utilitas gratis ini yang disebut Editor UI Khusus .
Edit: Untuk mengakomodasi permintaan baru oleh OP
Tutorial
Berikut tutorial singkat seperti yang dijanjikan:
Setelah Anda menginstal Custom UI Editor (CUIE), buka dan kemudian klik File | Buka dan pilih File Excel yang relevan. Harap pastikan bahwa File Excel ditutup sebelum Anda membukanya melalui CUIE. Saya menggunakan lembar kerja baru sebagai contoh.
Klik kanan seperti yang ditunjukkan pada gambar di bawah dan klik "Office 2007 Custom UI Part". Ini akan memasukkan "customUI.xml"
Selanjutnya Klik menu Sisipkan | Contoh XML | Tab Kustom. Anda akan melihat bahwa kode dasar dibuat secara otomatis. Sekarang Anda siap untuk mengeditnya sesuai kebutuhan Anda.
Mari kita periksa kodenya
label="Custom Tab"
: Ganti "Tab Khusus" dengan nama yang ingin Anda berikan pada tab Anda. Untuk saat ini sebut saja "Jerome".Bagian di bawah menambahkan tombol kustom.
imageMso
: Ini adalah gambar yang akan ditampilkan di tombol. "HappyFace" adalah apa yang akan Anda lihat saat ini. Anda dapat mengunduh lebih banyak ID gambar di sini .onAction="Callback"
: "Callback" adalah nama prosedur yang dijalankan saat Anda mengklik tombol.Demo
Dengan itu, mari buat 2 tombol dan beri nama "Tombol JG 1" dan "Tombol JG 2". Mari kita pertahankan wajah bahagia sebagai gambar yang pertama dan mari kita jaga "Matahari" untuk yang kedua. Kode yang diubah sekarang terlihat seperti ini:
Hapus semua kode yang dihasilkan di CUIE dan kemudian tempel kode di atas sebagai gantinya. Simpan dan tutup CUIE. Sekarang ketika Anda membuka File Excel akan terlihat seperti ini:
Sekarang bagian kode. Buka VBA Editor, masukkan modul, dan tempel kode ini:
Simpan file Excel sebagai file berkemampuan makro. Sekarang ketika Anda mengklik Smiley atau Matahari Anda akan melihat kotak pesan yang relevan:
Semoga ini membantu!
sumber
Saya dapat melakukannya dengan VBA di Excel 2013. Tidak diperlukan editor khusus. Yang Anda butuhkan hanyalah editor kode Visual Basic yang dapat diakses di tab Pengembang. Tab Pengembang tidak terlihat secara default sehingga perlu diaktifkan di File> Opsi> Kustomisasi Pita. Pada tab pengembang, klik tombol Visual Basic. Editor kode akan diluncurkan. Klik kanan di panel Project Explorer di sebelah kiri. Klik menu sisipkan dan pilih modul. Tambahkan kedua sub di bawah ini ke modul baru.
Panggil sub LoadCustRibbon di Wookbook bahkan buka dan panggil sub ClearCustRibbon di Acara Before_Close dari file kode Buku Ini.
sumber
Saya berjuang sekuat tenaga, tetapi ini sebenarnya jawaban yang benar. Untuk apa nilainya, apa yang saya lewatkan adalah ini:
Omong-omong, halaman yang menjelaskannya di situs Ron sekarang ada di http://www.rondebruin.nl/win/s2/win002.htm
Dan berikut ini contohnya tentang bagaimana Anda mengaktifkan / menonaktifkan tombol di Ribbon http://www.rondebruin.nl/win/s2/win013.htm
Untuk contoh pita xml lainnya, lihat juga http://msdn.microsoft.com/en-us/library/office/aa338202%28v=office.12%29.aspx
sumber
Jawaban di sini khusus untuk menggunakan Editor UI khusus. Saya menghabiskan beberapa waktu membuat antarmuka tanpa program luar biasa itu, jadi saya mendokumentasikan solusi di sini untuk membantu orang lain memutuskan apakah mereka membutuhkan editor UI khusus itu atau tidak.
Saya menemukan halaman web bantuan microsoft berikut - https://msdn.microsoft.com/en-us/library/office/ff861787.aspx . Ini menunjukkan cara mengatur antarmuka secara manual, tetapi saya mengalami beberapa masalah saat menunjuk ke kode tambahan khusus saya.
Untuk mendapatkan tombol agar bekerja dengan makro kustom Anda, atur makro di subs .xlam Anda agar dipanggil seperti yang dijelaskan dalam jawaban SO ini - Memanggil makro excel dari pita . Pada dasarnya, Anda harus menambahkan parameter "control As IRibbonControl" ke modul apa pun yang diarahkan dari pita xml Anda. Selain itu, pita xml Anda harus memiliki sintaks onAction = "myaddin! Mymodule.mysub" untuk memanggil modul apa pun yang dimuat oleh add in dengan benar.
Dengan menggunakan instruksi tersebut, saya dapat membuat add in excel (file .xlam) yang memiliki tab kustom yang dimuat saat VBA saya dimuat ke Excel bersama dengan add in. Tombol menjalankan kode dari add in dan tab kustom mencopot pemasangannya saat Saya menghapus add in.
sumber
Selain jawaban Roi-Kyi Bryant, kode ini sepenuhnya berfungsi di Excel 2010. Tekan ALT + F11 dan editor VBA akan muncul. Klik dua kali di
ThisWorkbook
sisi kiri, lalu tempel kode ini:Jangan lupa untuk menyimpan dan membuka kembali workbook. Semoga ini membantu!
sumber
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 ..xlam
file,Chart Tools.xlam
danPriveleged UDFs.xlam
, untuk mendemonstrasikan bagaimana beberapa add-in dapat berinteraksi dengan Ribbon.customUI
dan_rels
.customUI
folder, buatcustomUI.xml
file. ThecustomUI.xml
rincian file bagaimana Excel file berinteraksi dengan pita. Bagian 2 dari panduan Microsoft mencakup elemen di dalamcustomUI.xml
file.customUI.xml
File saya untukChart Tools.xlam
terlihat seperti inicustomUI.xml
File saya untukPriveleged UDFs.xlam
terlihat seperti ini.zip
untuk nama file mereka. Dalam kasus saya, saya mengganti namaChart Tools.xlam
menjadiChart Tools.xlam.zip
, danPrivelged UDFs.xlam
menjadiPriveleged UDFs.xlam.zip
..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.rels
File saya untukChart Tools.xlam
terlihat seperti ini.rels
File saya untukPriveleged UDFs
terlihat seperti ini..rels
file di setiap.zip
file dengan.rels
file / file yang dimodifikasi pada langkah sebelumnya..customUI
folder yang Anda buat ke direktori home dari.zip
file / files..zip
ekstensi file dari file Excel yang Anda buat ..xlam
file, kembali ke Excel, tambahkan file ke add-in Excel Anda.onAction
kata kunci di tombol saya. KataonAction
kunci menunjukkan bahwa, ketika elemen yang mengandung dipicu, aplikasi Excel akan memicu sub-rutin yang dibungkus dalam tanda kutip tepat setelahonAction
kata kunci. Ini dikenal sebagai panggilan balik . Dalam.xlam
file saya , saya memiliki modul yang disebut diCallBacks
mana saya telah memasukkan sub-rutinitas panggilan balik saya.CallBacks
Modul saya untukChart Tools.xlam
tampilannyaCallBacks
Modul saya untukPriveleged UDFs.xlam
tampilannyaOpsi Eksplisit
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
idQ
danxlmns:
. Dalam contoh saya,Chart Tools.xlam
danPriveleged UDFs.xlam
keduanya memiliki akses ke elemenidQ
sama denganx:chartToolsTab
danx:privelgedUDFsTab
. Agar ini berfungsi,x:
diperlukan, dan, saya telah menetapkan namespace-nya di baris pertamacustomUI.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.isMSO
kata kunci. Bagian Dua Cara Menyesuaikan UI Lancar di panduan Microsoft memberikan beberapa detail lebih lanjut.sumber
Pendekatan lain untuk ini adalah mengunduh modul kelas Open XML gratis Jan Karel Pieterse dari halaman ini: Mengedit elemen dalam file OpenXML menggunakan VBA
Dengan ini ditambahkan ke proyek VBA, Anda dapat mengekstrak file Excel, menggunakan VBA untuk mengubah XML, lalu menggunakan kelas untuk membuat file zip kembali.
sumber