जब कई ऐड-इन ने रिबन को संशोधित करने की कोशिश की तो मुझे रोई-काई ब्रायंट के समाधान में मुश्किलें आईं । मेरे पास अपने कार्य-कंप्यूटर पर व्यवस्थापक पहुंच भी नहीं है, जिसने इसे स्थापित करने से इनकार कर दिया है 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 यूआई अनुकूलित करने में माइक्रोसॉफ्ट गाइड कुछ और जानकारी देता है।