जब कई ऐड-इन ने रिबन को संशोधित करने की कोशिश की तो मुझे रोई-काई ब्रायंट के समाधान में मुश्किलें आईं । मेरे पास अपने कार्य-कंप्यूटर पर व्यवस्थापक पहुंच भी नहीं है, जिसने इसे स्थापित करने से इनकार कर दिया है Custom UI Editor। इसलिए, यदि आप मेरे समान नाव में हैं, तो यहां केवल एक्सेल का उपयोग करके रिबन को कस्टमाइज़ करने का एक वैकल्पिक उदाहरण है। ध्यान दें, मेरा समाधान Microsoft गाइड से लिया गया है ।
- एक्सेल फ़ाइल / फाइलें बनाएँ जिनके रिबन आप अनुकूलित करना चाहते हैं। मेरे मामले में, मैंने दो
.xlamफाइलें बनाई हैं , Chart Tools.xlamऔर Priveleged UDFs.xlam, यह दर्शाने के लिए कि रिबन के साथ कितने ऐड-इन्स बातचीत कर सकते हैं।
- आपके द्वारा बनाए गए प्रत्येक फ़ाइल के लिए, किसी भी फ़ोल्डर के नाम के साथ एक फ़ोल्डर बनाएँ ।
- फ़ोल्डरों आपके द्वारा बनाया गया में से प्रत्येक के अंदर, एक जोड़ने
customUIऔर_rels फ़ोल्डर ।
- प्रत्येक
customUIफ़ोल्डर के अंदर , एक customUI.xmlफ़ाइल बनाएँ । customUI.xmlफ़ाइल विवरण कैसे एक्सेल रिबन के साथ सहभागिता फ़ाइलें। Microsoft गाइड का भाग 2customUI.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कीवर्ड इंगित करता है कि, जब युक्त तत्व शुरू हो रहा है, एक्सेल आवेदन उप दिनचर्या सीधे के बाद उद्धरण चिह्नों में encased ट्रिगर किया जाएगा 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">। खंड दो तरीके Fluent यूआई अनुकूलित करने में माइक्रोसॉफ्ट गाइड कुछ और जानकारी देता है।
- यदि आप एड-इन्स के साथ भेजे गए रिबन तत्वों तक पहुँचने के लिए ऐड-इन्स चाहते हैं, तो
isMSOकीवर्ड का उपयोग करें । खंड दो तरीके Fluent यूआई अनुकूलित करने में माइक्रोसॉफ्ट गाइड कुछ और जानकारी देता है।