ভিবিএ ব্যবহার করে কীভাবে কাস্টম রিবন ট্যাব যুক্ত করবেন?


100

আমি এক্সেল ফিতাটিতে একটি কাস্টম ট্যাব যুক্ত করার একটি উপায় খুঁজছি যা কয়েকটি বোতাম বহন করবে। আমি গুগলের মাধ্যমে এটি সম্বোধন করে কিছু সংস্থান থেকে বেরিয়েছি তবে সবগুলিই অদ্ভুত এবং অত্যন্ত জটিল দেখায়।

এটি করার দ্রুত এবং সহজ উপায় কী? আমার ভিবিএ এক্সেলে লোড হয়ে গেলে নতুন ট্যাবটি লোড হওয়া চাই ..

আপডেট : আমি এখান থেকে এই উদাহরণটি চেষ্টা করেছি তবে শেষ নির্দেশে একটি "প্রয়োজনীয় জিনিস" ত্রুটি পেয়েছি :

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

আপনি কোন এক্সেল সংস্করণটি ব্যবহার করছেন তা দয়া করে নিশ্চিত করুন?
সিদ্ধার্থ রাউট

যে প্রকল্পের জন্য।
নাথন_সভ

উত্তর:


147

আফাইক আপনি এক্সি রিবায় কাস্টম ট্যাব তৈরি করতে ভিবিএ এক্সেল ব্যবহার করতে পারবেন না। তবে আপনি ভিবিএ ব্যবহার করে একটি ফিতা উপাদান আড়াল / দৃশ্যমান করতে পারবেন। অতিরিক্তভাবে, আপনি উপরে উল্লিখিত লিঙ্কটি এমএস প্রকল্পের জন্য এবং এমএস এক্সেলের নয়।

আমি কাস্টম ইউআই এডিটর নামে পরিচিত এই বিনামূল্যে ইউটিলিটিটি ব্যবহার করে আমার এক্সেল অ্যাপ্লিকেশনগুলি / অ্যাড-ইনগুলির জন্য ট্যাব তৈরি করি ।


সম্পাদনা করুন: ওপি কর্তৃক নতুন অনুরোধের জন্য

টিউটোরিয়াল

প্রতিশ্রুতি অনুসারে এখানে একটি সংক্ষিপ্ত টিউটোরিয়াল দেওয়া হল:

  1. আপনি কাস্টম ইউআই সম্পাদক (সিইউআইই) ইনস্টল করার পরে এটি খুলুন এবং তারপরে ফাইল | এ ক্লিক করুন প্রাসঙ্গিক এক্সেল ফাইলটি খুলুন এবং নির্বাচন করুন। আপনি সিইউআইই এর মাধ্যমে খোলার আগে এক্সেল ফাইলটি বন্ধ হয়ে গেছে তা নিশ্চিত হয়ে নিন। আমি উদাহরণ হিসাবে একেবারে নতুন ওয়ার্কশিট ব্যবহার করছি।

    এখানে চিত্র বর্ণনা লিখুন

  2. নীচের চিত্রটিতে প্রদর্শিত হিসাবে ডান ক্লিক করুন এবং "অফিস 2007 কাস্টম ইউআই পার্ট" এ ক্লিক করুন। এটি "কাস্টম ইউআই.এমএমএল" প্রবেশ করবে

    এখানে চিত্র বর্ণনা লিখুন

  3. পরের মেনুতে ক্লিক করুন | নমুনা এক্সএমএল | কাস্টম ট্যাব। আপনি লক্ষ্য করবেন যে বেসিক কোডটি স্বয়ংক্রিয়ভাবে উত্পন্ন হয়েছে। আপনার প্রয়োজনীয়তা অনুসারে আপনি এখন এটি সম্পাদনা করতে প্রস্তুত।

    এখানে চিত্র বর্ণনা লিখুন

  4. কোডটি পরিদর্শন করা যাক

    এখানে চিত্র বর্ণনা লিখুন

    label="Custom Tab": আপনি নিজের ট্যাবটি দিতে চান এমন নামের সাথে "কাস্টম ট্যাব" প্রতিস্থাপন করুন। আপাতত একে "জেরোম" বলি call

    নীচের অংশে একটি কাস্টম বোতাম যুক্ত করা হয়েছে।

    <button id="customButton" label="Custom Button" imageMso="HappyFace" size="large" onAction="Callback" />
    

    imageMso: এটি সেই চিত্র যা বোতামে প্রদর্শিত হবে। এই মুহুর্তে আপনি দেখতে পাবেন "হ্যাপিফ্রেস"। আপনি এখানে আরও চিত্র আইডি ডাউনলোড করতে পারেন

    onAction="Callback": "কলব্যাক" হ'ল প্রক্রিয়াটির নাম যা আপনি বাটনে ক্লিক করলে চলবে।

ডেমো

এর সাথে, আসুন 2 টি বোতাম তৈরি করুন এবং তাদের "জে জি বোতাম 1" এবং "জে জি বোতাম 2" কল করুন। আসুন প্রথমটির চিত্র হিসাবে খুশি চেহারা রাখি এবং দ্বিতীয়টির জন্য "সান" রাখি। সংশোধিত কোডটি এখন এমন দেখাচ্ছে:

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon startFromScratch="false">
<tabs>
<tab id="MyCustomTab" label="Jerome" insertAfterMso="TabView">
<group id="customGroup1" label="First Tab">
<button id="customButton1" label="JG Button 1" imageMso="HappyFace" size="large" onAction="Callback1" />
<button id="customButton2" label="JG Button 2" imageMso="PictureBrightnessGallery" size="large" onAction="Callback2" />
</group>
</tab>
</tabs>
</ribbon>
</customUI>

সিইউআইইতে উত্পন্ন সমস্ত কোড মুছুন এবং তারপরে উপরের কোডটি পেস্ট করুন। CUIE সংরক্ষণ এবং বন্ধ করুন। এখন আপনি যখন এক্সেল ফাইলটি খুলবেন তখন এটির মতো দেখতে পাবেন:

এখানে চিত্র বর্ণনা লিখুন

এখন কোড অংশ। ভিবিএ সম্পাদক খুলুন, একটি মডিউল sertোকান এবং এই কোডটি আটকে দিন:

Public Sub Callback1(control As IRibbonControl)

    MsgBox "You pressed Happy Face"

End Sub

Public Sub Callback2(control As IRibbonControl)

    MsgBox "You pressed the Sun"

End Sub

ম্যাক্রো সক্ষম ফাইল হিসাবে এক্সেল ফাইলটি সংরক্ষণ করুন। এখন আপনি যখন স্মাইলি বা সূর্যের উপর ক্লিক করেন আপনি প্রাসঙ্গিক বার্তা বাক্সটি দেখতে পাবেন:

এখানে চিত্র বর্ণনা লিখুন

আশাকরি এটা সাহায্য করবে!


6
হ্যাঁ :) রনের ওয়েবসাইটে প্রচুর উদাহরণ রয়েছে। rondebruin.nl/ribbon.htm
সিদ্ধার্থ রাউট

4
আপনি কি নতুন ট্যাব তৈরি করতে চান? যদি হ্যাঁ তবে আরও বিশদ সরবরাহ করুন এবং আমি আপনাকে এক্সএমএল কোড দেব :)
সিদ্ধার্থ রাউট

4
গিমমে 20 মিনিট। প্রাসঙ্গিক কোড এবং স্ন্যাপশট সহ উপরের পোস্টটি আপডেট করা হচ্ছে :)
সিদ্ধার্থ রাউট

7
@ সিদ্ধার্থরউট +1 - আমি খুঁজে পেয়েছি যে আমার কোনও এক্সেল বইয়ের দরকার নেই, একটি দিনের কাজের জন্য যা শিখতে হবে তার জন্য কেবল আপনার পোস্টগুলি অনুসরণ করুন (আজ সন্ধ্যায় এটি রিবনের এক্সএমএল!) :)
আমাদের ম্যান ইন কলা

4
আমি আপনার সাথে বেসিক এক্সএমএল কোড এবং ভিবিএ কোডটি দিয়ে একটি নতুন ক্যাসিটন তৈরি করার পরামর্শ দেব এবং তারপরে আমরা কী এটি সেখানে ফর্ম নিতে পারি? @ ইয়াসারখালিল
সিদ্ধার্থ

30

আমি এক্সেল 2013 এ ভিবিএর সাহায্যে এটি সম্পাদন করতে সক্ষম হয়েছি। কোনও বিশেষ সম্পাদকের প্রয়োজন নেই। আপনার যা দরকার তা হ'ল ভিজ্যুয়াল বেসিক কোড সম্পাদক যা বিকাশকারী ট্যাবে অ্যাক্সেস করা যায়। বিকাশকারী ট্যাবটি ডিফল্টরূপে দৃশ্যমান হয় না তাই এটি ফাইল> বিকল্পগুলি> কাস্টমাইজ রিবনটিতে সক্ষম করা দরকার। বিকাশকারী ট্যাবে, ভিজ্যুয়াল বেসিক বোতামটি ক্লিক করুন। কোড সম্পাদক চালু হবে। বাম দিকে প্রকল্প এক্সপ্লোরার ফলকে ডান ক্লিক করুন। সন্নিবেশ মেনুতে ক্লিক করুন এবং মডিউল চয়ন করুন। নতুন মডিউলটিতে নীচে উভয় সাব যোগ করুন।

Sub LoadCustRibbon()

Dim hFile As Long
Dim path As String, fileName As String, ribbonXML As String, user As String

hFile = FreeFile
user = Environ("Username")
path = "C:\Users\" & user & "\AppData\Local\Microsoft\Office\"
fileName = "Excel.officeUI"

ribbonXML = "<mso:customUI      xmlns:mso='http://schemas.microsoft.com/office/2009/07/customui'>" & vbNewLine
ribbonXML = ribbonXML + "  <mso:ribbon>" & vbNewLine
ribbonXML = ribbonXML + "    <mso:qat/>" & vbNewLine
ribbonXML = ribbonXML + "    <mso:tabs>" & vbNewLine
ribbonXML = ribbonXML + "      <mso:tab id='reportTab' label='Reports' insertBeforeQ='mso:TabFormat'>" & vbNewLine
ribbonXML = ribbonXML + "        <mso:group id='reportGroup' label='Reports' autoScale='true'>" & vbNewLine
ribbonXML = ribbonXML + "          <mso:button id='runReport' label='PTO' "   & vbNewLine
ribbonXML = ribbonXML + "imageMso='AppointmentColor3'      onAction='GenReport'/>" & vbNewLine
ribbonXML = ribbonXML + "        </mso:group>" & vbNewLine
ribbonXML = ribbonXML + "      </mso:tab>" & vbNewLine
ribbonXML = ribbonXML + "    </mso:tabs>" & vbNewLine
ribbonXML = ribbonXML + "  </mso:ribbon>" & vbNewLine
ribbonXML = ribbonXML + "</mso:customUI>"

ribbonXML = Replace(ribbonXML, """", "")

Open path & fileName For Output Access Write As hFile
Print #hFile, ribbonXML
Close hFile

End Sub

Sub ClearCustRibbon()

Dim hFile As Long
Dim path As String, fileName As String, ribbonXML As String, user As String

hFile = FreeFile
user = Environ("Username")
path = "C:\Users\" & user & "\AppData\Local\Microsoft\Office\"
fileName = "Excel.officeUI"

ribbonXML = "<mso:customUI           xmlns:mso=""http://schemas.microsoft.com/office/2009/07/customui"">" & _
"<mso:ribbon></mso:ribbon></mso:customUI>"

Open path & fileName For Output Access Write As hFile
Print #hFile, ribbonXML
Close hFile

End Sub

এমনকি উইকবুকের ওপেন লোডকাস্ট্রি রিবন উপকে কল করুন এবং এই ওয়ার্কবুক কোড ফাইলটির পূর্ববর্তী-ক্লোজ ইভেন্টে ক্লিয়ারকাস্টআরআইবন সাব কল করুন।


এটি আমার পক্ষে কাজ করেছে তবে আমি যে কয়েকটি ছোট ছোট সমস্যা নিয়ে এসেছি with 1) আমি যদি পূর্ববর্তী ঘটনা বন্ধ রাখি তবে নতুন ফিতাটি লোড হবে না। 2) আমি যখন পূর্ববর্তী-ক্লোজ ইভেন্টটি সরিয়ে ফিতাটি কাজ করতে সক্ষম হয়েছি তখন এক্সেলটি উপস্থিত হওয়ার আগে আমাকে পুনরায় লোড করতে হয়েছিল। আপনি যদি পরামর্শ দিতে পারেন যে কেন এটি হচ্ছে, তবে তা দুর্দান্ত হবে!
পেটয় 8787

কোডটি কি ঠিক একই রকম? আপনি কি এটি পোস্ট করতে পারেন? ধারণাটি হ'ল এক্সেলের স্ট্যান্ডার্ড ফিতা ফাইলটি সংশোধন করা উচিত ফিতাটি লোড হওয়ার আগে এবং ওয়ার্কবুক বন্ধ হওয়ার আগে এটি পুনরায় সেট করা। ফিতাটি পুনরায় সেট করা প্রয়োজনীয় যাতে এটি অন্যান্য ওয়ার্কবুকগুলিতে প্রদর্শিত হয় না।
রুই-কি ব্রায়ান্ট

4
এই কোডটি ব্যবহারকারীদের ইতিমধ্যে তৈরি করা সমস্ত রিবন কাস্টমাইজেশন ওভাররাইট করে।
উইজলউজল

পছন্দ করেছেন ফিতাটি আমদানি করা যায় এবং এমন কোনও বস্তুকে পার্স করা যায় যা ট্র্যাভার করা যায়। তারপরে নতুন উপাদানগুলি বস্তুটিতে যুক্ত করা যেতে পারে। ফলাফলটি একটি ফাইলে সংরক্ষণ করা যায়। প্রশ্নটি কীভাবে কাস্টম ফিতা তৈরি করবেন; কীভাবে কোনও বিদ্যমানটিকে সংশোধন করবেন না।
রুই-কি ব্রায়ান্ট

4
@ রই-কি-ব্রায়ান্ট প্রশ্নটি ছিল একটি কাস্টম ফিতা আইটেম যুক্ত করার জন্য, পুরো বর্তমান কাস্টম ফিতাটি ওভাররাইট না করে। এই কোডটি বর্তমান পটিটি ওভাররাইট করে।
উইজলউজল

24

আমি পাগলের মতো লড়াই করেছি, তবে এটি আসলে সঠিক উত্তর। এটি মূল্যবান কিসের জন্য, যা আমি মিস করেছি তা হ'ল:

  1. অন্যরা যেমন বলে, কেউ ভিবিএ দিয়ে কাস্টমইউআই ফিতা তৈরি করতে পারে না, তবে আপনার প্রয়োজন নেই!
  2. ধারণাটি হ'ল আপনি এক্সেলের ফাইল> বিকল্পগুলি> রিবনটি কাস্টমাইজ করুন ব্যবহার করে আপনার এক্সএমএল রিবন কোড তৈরি করেন এবং তারপরে একটি কাস্টমইউআই ফাইলে রিবনটি রফতানি করুন (এটি কেবলমাত্র একটি টেক্সট ফাইল, এতে এক্সএমএল সহ)
  3. কৌশলটি এখন আসে : আপনি .xustmUI কোডটি .xustomUI ফাইল থেকে কোড অনুলিপি করে এখানে বর্ণিত এমএস সরঞ্জামটি ব্যবহার করে আপনার .xlsm ফাইলে অন্তর্ভুক্ত করতে পারেন can
  4. একবার এটি .xlsm ফাইলে অন্তর্ভুক্ত হয়, আপনি এটি খোলার প্রত্যেক সময়, পটি আপনি সংজ্ঞায়িত করা হয় যোগ ব্যবহারকারীর পটি করতে - কিন্তু ব্যবহার করবেন <পটি startFromScratch = "মিথ্যা"> অথবা আপনি পটি বাকি হারান। ওয়ার্কবুকটি প্রস্থান করার সময়, ফিতাটি সরানো হবে।
  5. এখান থেকে এটি সহজ, আপনার পটি তৈরি করুন,। কাস্টমউআইআই ফাইল থেকে আপনার ফিতা নির্দিষ্ট যে এক্সএমএল কোডটি অনুলিপি করুন এবং উপরে বর্ণিত একটি মোড়কে রাখুন (... <ট্যাব> আপনার এক্সএমএল </ ট্যাব .. ।)

যে পৃষ্ঠায় এটি রনের সাইটে ব্যাখ্যা করা হয়েছে তা এখন http://www.rondebruin.nl/win/s2/win002.htm এ রয়েছে

এবং আপনি কীভাবে রিবন http://www.rondebruin.nl/win/s2/win013.htm- এ বোতাম সক্ষম / অক্ষম করবেন তার উদাহরণ এখানে রয়েছে is

ফিতাগুলির অন্যান্য এক্সএমএল উদাহরণগুলির জন্য দয়া করে http://msdn.microsoft.com/en-us/library/office/aa338202%28v=office.12%29.aspx দেখুন


4
তবুও (৫ বছর পরে) আমার মতে সেরা উত্তর এবং সম্ভবত ওপি @ বুজেজ কমপক্ষে এই উত্তরটির (?) নির্দেশ করে মূল পোস্টটি রিফ্রেশ করতে চান। উত্তরগুলির পরিবর্তে দীর্ঘ তালিকার নীচে পড়ে থাকা অবস্থায় আমি সবেই এটি পেয়েছি।
Chri.s

18

এখানে উত্তরগুলি কাস্টম ইউআই সম্পাদক ব্যবহার করার জন্য নির্দিষ্ট। আমি সেই দুর্দান্ত প্রোগ্রামটি ছাড়াই ইন্টারফেসটি তৈরি করতে কিছু সময় ব্যয় করেছি, সুতরাং অন্য যে কারওটিকে সেই কাস্টম ইউআই সম্পাদক দরকার কিনা তা সিদ্ধান্ত নিতে সহায়তা করার জন্য আমি সমাধানটি এখানে ডকুমেন্ট করছি।

আমি নিম্নলিখিত মাইক্রোসফ্ট সহায়তার ওয়েবপৃষ্ঠাটি পেয়েছি - https://msdn.microsoft.com/en-us/library/office/ff861787.aspx । এটি ম্যানুয়ালি ইন্টারফেসটি কীভাবে সেট আপ করতে পারে তা দেখায়, তবে আমার কাস্টম অ্যাড-ইন কোডের দিকে ইঙ্গিত করার সময় আমার কিছুটা সমস্যা হয়েছিল।

আপনার কাস্টম ম্যাক্রোগুলির সাথে কাজ করার জন্য বোতামগুলি পেতে, আপনার .xlam সাব-তে ম্যাক্রো সেটআপ করুন যাতে এই এসও উত্তরে বর্ণিত হয় - ফিতা থেকে একটি এক্সেল ম্যাক্রো কল করা । মূলত, আপনার পটি এক্সএমএল থেকে নির্দেশিত যে কোনও মডিউলে আপনাকে "আইআরআইবি কনট্রোল হিসাবে নিয়ন্ত্রণ" পরামিতি যুক্ত করতে হবে। এছাড়াও, আপনার পটি এক্সএমএলে অ্যাড ইন দ্বারা লোড হওয়া কোনও মডিউল সঠিকভাবে কল করার জন্য অনাকশন = "মায়াড্ডিন! মাইমডিউল.মাইসুব" সিনট্যাক্স থাকা উচিত।

এই নির্দেশাবলী ব্যবহার করে আমি (। এক্স্লাম ফাইল) একটি এক্সেল অ্যাড তৈরি করতে সক্ষম হয়েছি যখন আমার ভিবিএ অ্যাডের সাথে এক্সেলের সাথে লোড হয়ে যায় তখন একটি কাস্টম ট্যাব লোড হয় add অ্যাড থেকে বোতামগুলি কোড কার্যকর করে এবং কাস্টম ট্যাব আনইনস্টল করে আমি অ্যাড সরিয়েছি


4
এটি আমাদের মধ্যে কাজ করে যাদের সকল বিকাশের সরঞ্জাম নেই। "সহজ" সমাধানের জন্য ধন্যবাদ
ইভান

4
আমি আমার দ্বিতীয় বর্ষের প্রোগ্রামিং শিক্ষার্থীদের এই পদ্ধতিটি শিখিয়েছি, তবে শেষ পর্যন্ত দেখা গেছে যে আপনি যদি এটি অ্যাক্সেস করতে পারেন তবে কাস্টমইউআই সরঞ্জামটি ব্যবহার করা কম জটিল।
রিক হেন্ডারসন

8

রুই-কি ব্রায়ান্ট উত্তর ছাড়াও, এই কোডটি এক্সেল ২০১০ এ সম্পূর্ণরূপে কাজ করে AL ALT + F11 টিপুন এবং ভিবিএ সম্পাদক পপ আপ করবে। ThisWorkbookবাম দিকে ডাবল ক্লিক করুন , তারপরে এই কোডটি আটকে দিন:

Private Sub Workbook_Activate()

Dim hFile As Long
Dim path As String, fileName As String, ribbonXML As String, user As String

hFile = FreeFile
user = Environ("Username")
path = "C:\Users\" & user & "\AppData\Local\Microsoft\Office\"
fileName = "Excel.officeUI"

ribbonXML = "<mso:customUI      xmlns:mso='http://schemas.microsoft.com/office/2009/07/customui'>" & vbNewLine
ribbonXML = ribbonXML + "  <mso:ribbon>" & vbNewLine
ribbonXML = ribbonXML + "    <mso:qat/>" & vbNewLine
ribbonXML = ribbonXML + "    <mso:tabs>" & vbNewLine
ribbonXML = ribbonXML + "      <mso:tab id='reportTab' label='My Actions' insertBeforeQ='mso:TabFormat'>" & vbNewLine
ribbonXML = ribbonXML + "        <mso:group id='reportGroup' label='Reports' autoScale='true'>" & vbNewLine
ribbonXML = ribbonXML + "          <mso:button id='runReport' label='Trim' " & vbNewLine
ribbonXML = ribbonXML + "imageMso='AppointmentColor3'      onAction='TrimSelection'/>" & vbNewLine
ribbonXML = ribbonXML + "        </mso:group>" & vbNewLine
ribbonXML = ribbonXML + "      </mso:tab>" & vbNewLine
ribbonXML = ribbonXML + "    </mso:tabs>" & vbNewLine
ribbonXML = ribbonXML + "  </mso:ribbon>" & vbNewLine
ribbonXML = ribbonXML + "</mso:customUI>"

ribbonXML = Replace(ribbonXML, """", "")

Open path & fileName For Output Access Write As hFile
Print #hFile, ribbonXML
Close hFile

End Sub

Private Sub Workbook_Deactivate()

Dim hFile As Long
Dim path As String, fileName As String, ribbonXML As String, user As String

hFile = FreeFile
user = Environ("Username")
path = "C:\Users\" & user & "\AppData\Local\Microsoft\Office\"
fileName = "Excel.officeUI"

ribbonXML = "<mso:customUI           xmlns:mso=""http://schemas.microsoft.com/office/2009/07/customui"">" & _
"<mso:ribbon></mso:ribbon></mso:customUI>"

Open path & fileName For Output Access Write As hFile
Print #hFile, ribbonXML
Close hFile

End Sub

ওয়ার্কবুক সংরক্ষণ এবং পুনরায় খুলতে ভুলবেন না। আশাকরি এটা সাহায্য করবে!


আপনি কিভাবে এটি দিয়ে তর্ক করবেন? আমি এটি ব্যবহার করে চলেছি, তবে তর্কগুলি পাস করার উপায় খুঁজে পাচ্ছি না।
jDave1984

আমার উত্তরটি ব্যবহার করে, আপনি প্রতিটি উপ রুটিনে কিছু যুক্তিযুক্ত লোডকাস্টম রিবনের (স্ট্রিং হিসাবে ট্যাবনাম, স্ট্রিং হিসাবে গ্রুপ নাম, স্ট্রিং হিসাবে বিটিএননাম) যুক্ত যুক্তি যুক্ত করবেন। তারপরে @ এরিকাস নির্দেশিত হিসাবে উপযুক্ত উপায়ে সেই উপ-রুটিনগুলিকে কল করুন।
রুই-কি ব্রায়ান্ট

6

যখন একাধিক অ্যাড-ইনগুলি ফিতাটি সংশোধন করার চেষ্টা করেছিল তখন আমি রই-কি ব্রায়ান্টের সমাধান নিয়ে সমস্যার সম্মুখীন হয়েছিল। আমার ওয়ার্ক-কম্পিউটারে অ্যাডমিন অ্যাক্সেসও নেই, যা ইনস্টল করার বিষয়টি অস্বীকার করে Custom UI Editor। সুতরাং, যদি তুমি আমাকে যেমন একই নৌকা করছি, এখানে একটি বিকল্প এর উদাহরণ পটি শুধুমাত্র এক্সেল ব্যবহার কাস্টমাইজ করতে। দ্রষ্টব্য, আমার সমাধানটি মাইক্রোসফ্ট গাইড থেকে প্রাপ্ত ।


  1. এক্সেল ফাইল / ফাইলগুলি তৈরি করুন যার ফিতা আপনি কাস্টমাইজ করতে চান। আমার ক্ষেত্রে, আমি দুটি .xlamফাইল তৈরি করেছি Chart Tools.xlamএবং Priveleged UDFs.xlamএকাধিক অ্যাড-ইনগুলি কীভাবে রিবনের সাথে ইন্টারেক্ট করতে পারে তা দেখানোর জন্য।
  2. আপনার সদ্য তৈরি করা প্রতিটি ফাইলের জন্য যে কোনও ফোল্ডারের নাম সহ একটি ফোল্ডার তৈরি করুন ।
  3. আপনার তৈরি প্রতিটি ফোল্ডারের ভিতরে একটি customUIএবং _relsফোল্ডার যুক্ত করুন।
  4. প্রতিটি customUIফোল্ডারের ভিতরে একটি customUI.xmlফাইল তৈরি করুন। customUI.xmlফাইল বিবরণ কিভাবে এক্সেল পটি সাথে ইন্টারঅ্যাক্ট ফাইল। মাইক্রোসফ্ট গাইডের পার্ট 2customUI.xml ফাইলের উপাদানগুলিকে coversেকে দেয় ।

আমার 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. জন্য প্রতিটি আপনি যে ফাইলটি ধাপ 1 এ তৈরি, প্রত্যয় একটি .zipতাদের ফাইলের নাম রয়েছে। আমার ক্ষেত্রে, আমি নতুন নামকরণ Chart Tools.xlamকরা Chart Tools.xlam.zip, এবং Privelged UDFs.xlamকরতে Priveleged UDFs.xlam.zip
  2. প্রতিটি .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>
  1. পূর্ববর্তী ধাপে আপনি যে ফাইল / ফাইলগুলি সংশোধন করেছেন তার সাথে .relsপ্রতিটি .zipফাইলের ফাইলগুলি প্রতিস্থাপন করুন .rels
  2. .customUIআপনার তৈরি করা ফোল্ডারটি অনুলিপি .zip/ ফাইলের হোম ডিরেক্টরিতে পেস্ট করুন ।
  3. .zipআপনার তৈরি এক্সেল ফাইলগুলি থেকে ফাইল এক্সটেনশন সরান
  4. আপনি যদি .xlamফাইল তৈরি করে থাকেন তবে এক্সেলে ফিরে এসে এগুলি আপনার এক্সেল অ্যাড-ইনগুলিতে যুক্ত করুন।
  5. প্রযোজ্য হলে, আপনার প্রতিটি অ্যাড- ইনগুলিতে কলব্যাক তৈরি করুন। চতুর্থ ধাপে, 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

বিভিন্ন উপাদানের আলাদা কলব্যাক উপ-রুটিন স্বাক্ষর রয়েছে have বোতামগুলির জন্য, প্রয়োজনীয় সাব-রুটিন প্যারামিটারটি ByRef control As IRibbonControl। যদি আপনি প্রয়োজনীয় কলব্যাক স্বাক্ষরের সাথে সম্মতি না পান তবে আপনার ভিবিএ প্রকল্প / প্রকল্পগুলি সংকলনের সময় আপনি একটি ত্রুটি পাবেন। মাইক্রোসফ্ট গাইডের অংশ 3 সমস্ত কলব্যাক স্বাক্ষরগুলি সংজ্ঞায়িত করে।


আমার সমাপ্ত উদাহরণটি দেখতে দেখতে এখানে

সমাপ্ত পণ্য


কিছু সমাপ্তির টিপস

  1. আপনি ভাগ রিবন উপাদান অ্যাড-ইনগুলি চান, ব্যবহার 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">,। অধ্যায় দুটি উপায়ে সাবলীল UI 'তে কাস্টমাইজ করতে মধ্যে মাইক্রোসফট নির্দেশিকা আরো কিছু বিবরণ দেয়।
  2. আপনি যদি এক্সেলের সাথে প্রেরিত রিবন উপাদানগুলিতে অ্যাক্সেস করতে অ্যাড-ইনগুলি চান তবে isMSOকীওয়ার্ডটি ব্যবহার করুন । অধ্যায় দুটি উপায়ে সাবলীল UI 'তে কাস্টমাইজ করতে মধ্যে মাইক্রোসফট নির্দেশিকা আরো কিছু বিবরণ দেয়।

1

এর আরেকটি উপায় হ'ল এই পৃষ্ঠা থেকে জ্যান কারেল পিটারসের ফ্রি ওপেন এক্সএমএল ক্লাস মডিউলটি ডাউনলোড করা: ভিবিএ ব্যবহার করে একটি ওপেনএক্সএমএল ফাইলে উপাদান সম্পাদনা করা to

এটি আপনার ভিবিএ প্রকল্পে যুক্ত হওয়ার সাথে সাথে আপনি এক্সেল ফাইলটি আনজিপ করতে পারেন, এক্সএমএল সংশোধন করতে ভিবিএ ব্যবহার করতে পারেন, তারপরে ফাইলগুলি রিজিপ করতে শ্রেণিটি ব্যবহার করুন।


আমি খুশি যে আমি এই সুতার নীচে স্ক্রোল করেছি। আমি ঠিক এটিই খুঁজছিলাম! ধন্যবাদ, জন :-)
স্কট_ফ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.