Birden fazla eklenti şeridi değiştirmeye çalıştığında Roi-Kyi Bryant'ın çözümünde zorluklarla karşılaştım . Ayrıca iş bilgisayarımda yönetici erişimim yok, bu da Custom UI Editor
. Yani, benimle aynı teknedeyseniz , şeridi yalnızca Excel kullanarak özelleştirmenin alternatif bir örneğini burada bulabilirsiniz . Not, benim çözümüm Microsoft kılavuzundan alınmıştır .
- Şeritlerini özelleştirmek istediğiniz Excel dosyası / dosyaları oluşturun. Benim durumumda, iki
.xlam
dosya oluşturdum Chart Tools.xlam
ve Priveleged UDFs.xlam
birden çok eklentinin Şerit ile nasıl etkileşime girebileceğini göstermek için.
- Yeni oluşturduğunuz her dosya için herhangi bir klasör adıyla bir klasör oluşturun.
- Oluşturduğunuz klasörlerin her birinin içine bir
customUI
ve _rels
klasör ekleyin .
- Her
customUI
klasörün içinde bir customUI.xml
dosya oluşturun. customUI.xml
Excel kurdeleli etkileşim dosyaları nasıl dosya ayrıntıları. Microsoft kılavuzunun 2. Bölümü , customUI.xml
dosyadaki öğeleri kapsar .
Benim customUI.xml
için dosya Chart Tools.xlam
böyle görünüyor
<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>
Benim customUI.xml
için dosya Priveleged UDFs.xlam
böyle görünüyor
<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>
- İçin her dosyaya Eğer eki bir adım 1'de oluşturduğunuz
.zip
kendi dosya adına. Benim durumumda, ben değiştirildi Chart Tools.xlam
etmek Chart Tools.xlam.zip
ve Privelged UDFs.xlam
karşı Priveleged UDFs.xlam.zip
.
- Her
.zip
dosyayı açın ve _rels
klasöre gidin . .rels
Dosyayı _rels
3. Adımda oluşturduğunuz klasöre kopyalayın. Her .rels
dosyayı bir metin düzenleyiciyle düzenleyin. Gönderen Microsoft rehber
Son <Relationship>
öğe ile kapanış
<Relationships>
öğesi arasına, belge dosyası ile özelleştirme dosyası arasında bir ilişki oluşturan bir çizgi ekleyin. Klasör ve dosya adlarını doğru belirlediğinizden emin olun.
<Relationship Type="http://schemas.microsoft.com/office/2006/
relationships/ui/extensibility" Target="/customUI/customUI.xml"
Id="customUIRelID" />
Benim .rels
için dosya Chart Tools.xlam
böyle görünüyor
<?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>
Benim .rels
için dosya Priveleged UDFs
böyle görünüyor.
<?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>
- Değiştir
.rels
her dosyaları .zip
ile dosyada .rels
dosyası / dosyaları önceki adımda güncellenmiştir.
.customUI
Oluşturduğunuz klasörü kopyalayıp .zip
dosyanın / dosyaların ana dizinine yapıştırın .
.zip
Dosya uzantısını oluşturduğunuz Excel dosyalarından kaldırın .
.xlam
Dosyaları Excel'de oluşturduysanız , bunları Excel eklentilerinize ekleyin.
- Mümkünse, eklentilerinizin her birinde geri çağırmalar oluşturun. 4. Adımda,
onAction
düğmelerimde anahtar kelimeler var . onAction
Anahtar kelime içeren eleman tetiklendiğinde, Excel uygulama hemen sonra tırnak kaplı alt rutin tetikleyecek, belirten onAction
anahtar kelime. Bu, geri arama olarak bilinir . Benim içinde .xlam
dosyalar, ben adlı bir modüle sahip CallBacks
benim geri arama alt rutinleri yer verdik nerede.
Benim CallBacks
için modül Chart Tools.xlam
gibi görünüyor
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
Benim CallBacks
için modül Priveleged UDFs.xlam
gibi görünüyor
Seçenek Açık
Public Sub InitialisePrivelegedUDFsCallBack(ByRef control As IRibbonControl)
ThisWorkbook.InitialisePrivelegedUDFs
End Sub
Public Sub DeInitialisePrivelegedUDFsCallBack(ByRef control As IRibbonControl)
ThisWorkbook.DeInitialisePrivelegedUDFs
End Sub
Farklı öğelerin farklı bir geri arama alt rutin imzası vardır. Düğmeler için gerekli alt rutin parametresi şudur ByRef control As IRibbonControl
. Gerekli geri arama imzasına uymazsanız, VBA projenizi / projelerinizi derlerken bir hata alırsınız. Microsoft kılavuzunun 3. Bölümü , tüm geri arama imzalarını tanımlar.
İşte bitmiş örneğim şöyle görünüyor
Bazı kapanış ipuçları
- Eklentilerin Şerit öğelerini paylaşmasını istiyorsanız,
idQ
ve xlmns:
anahtar sözcüğünü kullanın . Örneğimde, Chart Tools.xlam
ve Priveleged UDFs.xlam
her ikisi de idQ
's eşittir x:chartToolsTab
ve ' olan öğelere erişebilir x:privelgedUDFsTab
. İşe Bunun için x:
benim ilk satırında onun ad tanımladıktan gerekli edilir ve customUI.xml
dosyanın <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" xmlns:x="sao">
. Bölüm Akıcı UI özelleştirme İki Yolu içinde Microsoft kılavuz biraz daha ayrıntılı bilgi verir.
- Eklentilerin Excel ile birlikte gönderilen Şerit öğelerine erişmesini istiyorsanız
isMSO
anahtar sözcüğü kullanın . Bölüm Akıcı UI özelleştirme İki Yolu içinde Microsoft kılavuz biraz daha ayrıntılı bilgi verir.