एक्सेल कस्टम फ़ंक्शन टूलटिप की खोज


100

यह प्रश्न पहले पूछा गया है , लेकिन हर बार स्वीकृत जवाब केवल फ़ंक्शन विवरण ( VBA6 ) ( VBA7 ) का उपयोग करने के लिए इस्तीफा देना है , लेकिन यह जानकारी वास्तव में टूलटिप के रूप में प्रकट नहीं होती है, इसलिए यह मेरी समस्या का समाधान नहीं करता है।Application.MacroOptions

लक्ष्य

हम सभी की इच्छा किसी भी तरह (VBA, VSTO, या COM ऐड-इन) द्वारा कस्टम फ़ंक्शन को परिभाषित करने में सक्षम होना है और उपयोगकर्ता को फ़ंक्शन और उसके मापदंडों के पॉप-अप / टूल-टिप विवरण का लाभ देना है, जैसा कि प्रत्येक अंतर्निहित Excel फ़ंक्शन के लिए, इनलाइन या सूत्र पट्टी में प्रकट होता है:

यहां छवि विवरण दर्ज करें

यहां छवि विवरण दर्ज करें

इस आवश्यकता के लिए व्यापक रूप से स्वीकृत उत्तर यह है कि यह कस्टम कार्यों के लिए संभव नहीं है, लेकिन मैं उस विश्वास को चुनौती देना चाहता हूं।

समस्या

वर्तमान में, मैंने जिस किसी को भी देखा है, वह फ़ंक्शंस को परिभाषित करने के लिए है (अक्सर उपरोक्त मैक्रोऑर्सेस कॉल का उपयोग करते हुए) ताकि फ़ंक्शन डायलॉग लाते समय (सूत्र पट्टी में fx बटन) उनके फ़ंक्शन और पैरामीटर विवरण नीचे दिए गए दिखाई दें:

यहां छवि विवरण दर्ज करें

जैसा कि आप देख सकते हैं, यह कई मापदंडों के साथ एक जटिल कार्य है। यदि उपयोगकर्ता को इस "फ़ंक्शन तर्क" संवाद के बारे में पता नहीं है और इसे कैसे लाया जाए, और इसके बजाय केवल एक्सेल के मानक टूलटिप से परिचित हैं, तो वे केवल सूत्र नाम देखेंगे और कोई अतिरिक्त मदद नहीं करेंगे:

यहां छवि विवरण दर्ज करें

जिसके साथ उन्हें आवश्यक मापदंडों को सही ढंग से प्रदान करने का कोई मौका नहीं है। (प्रलेखन को पढ़े बिना, बेशक, कोई भी उपयोगकर्ता कभी नहीं करता है।)

अब, एक शक्ति उपयोगकर्ता को पता चल सकता है कि Ctrl+ Shift+ टाइप करने से A, उन्हें फ़ंक्शन मापदंडों की एक स्वत: पूर्ण सूची दी जाएगी जैसे:

यहां छवि विवरण दर्ज करें

लेकिन निश्चित रूप से, हम ऊपर के रूप में एक ही समस्या है जो यह है कि मानक एक्सेल उपयोगकर्ताओं को केवल पहली छवि से डिफ़ॉल्ट व्यवहार के लिए इस्तेमाल किया जाएगा और शायद उस सुविधा को कभी नहीं सीखा होगा।

यह इस बिंदु से स्पष्ट होना चाहिए कि यह पर्याप्त क्यों नहीं है और हम चाहते हैं कि प्रत्येक फ़ंक्शन में क्या बनाया गया है - इन-लाइन टूल-टिप जो उपयोगकर्ता को फ़ंक्शन का उपयोग करने का तरीका बताता है।

छेड़ो

सबसे पहले, मुझे यकीन हो गया है कि यह केवल देशी एक्सेल एप्लिकेशन कार्यों के अलावा संभव नहीं है। ऐड-इन्स और VBA एक्स्टेंसिबिलिटी फीचर्स हैं, और यह टूल-टिप केवल एक्स्टेंसिबल नहीं हो सकता है। लेकिन उस सिद्धांत को विश्लेषण टूलपैक ऐड-इन के अस्तित्व से चुनौती दी जाती है। ज़रूर, यह Microsoft में बनाया गया है, लेकिन ANALYS32.xll एक स्वसंपूर्ण XLL ऐड-इन है, जो VB, C, C ++ और C # में उत्पादित किया जा सकता है। सुनिश्चित करें कि पर्याप्त, इस XLL आवेदन में लोड किया जाता है जब कार्यों यह करता है कि उपलब्ध देशी एक्सेल कार्यों का एक ही उपकरण सुझाव है:

यहां छवि विवरण दर्ज करें

निश्चित रूप से अगर यह जानकारी किसी तरह से इस XLL फ़ाइल में एन्कोड की गई है और Excel में पारित हो गई है, तो इसे हमारे अपने ऐड-इन्स के साथ दोहराने का एक तरीका है? मैं अब इस बिंदु पर हूं जहां मैं खुद को विघटित करने के बारे में थोड़ा पढ़ाना शुरू करने जा रहा हूं और यह देखने के लिए कि क्या मैं विश्लेषण टूलपैक में जो कुछ भी चल रहा है, उसे रिवर्स-इंजीनियर कर सकता हूं।

आप कैसे मदद कर सकते है

मुझे लगभग निश्चित है कि मैंने इस समस्या के बारे में सार्वजनिक रूप से उपलब्ध सभी जानकारी पर शोध किया है। अगर किसी को कुछ पता है जो मुझे नहीं पता है कि इसके साथ मदद कर सकते हैं, तो झंकार करने के लिए स्वतंत्र महसूस करें। मैं रिवर्स-इंजीनियरिंग संकलित dll / xlls से बहुत अपरिचित हूं, इसलिए यदि किसी को लगता है कि पॉपिंग का विश्लेषण32 की अपनी स्थानीय प्रति खोलना है। xll यह पता लगाना कि यह कस्टम फ़ंक्शन परिभाषाओं के साथ क्या हो रहा है, मैं बहुत मजबूर होऊंगा। अन्यथा, मैं बस इस में खुद को खोदता रहूंगा जब तक कि मैं सभी मृत सिरों को नहीं मारूंगा और जो मुझे मिल रहा है उसे वापस रिपोर्ट करें।


4
किसी भी उपलब्ध तकनीकों का उपयोग करके वर्तमान एक्सेल संस्करणों में यूडीएफ तर्कों के लिए टूलटिप्स बनाना या दिखाना संभव नहीं है। एमवीपी द्वारा स्रोत: answers.microsoft.com/en-us/office/forum/office_2007-customize/...
silkfire

.NET परावर्तक ANALYS32.xll नहीं खोल सका, यह निष्कर्ष निकालता है कि यह एक .NET असेंबली नहीं है। इसने मुझे चौंका दिया। ऐसा लगता है कि मुझे विधानसभा भाषा में इसे अपघटित करने की कोशिश करनी होगी?
एलन

5
दिलचस्प लगता है, लेकिन मेरे पास अतीत (कार्यालय 97) में टूलटिप्स हैं जो वाइनपी का उपयोग करते हैं। और इस तरह से आप इसे कर सकते हैं। अगर यह दिलचस्प है तो मैं इस जानकारी को खोद सकता हूं और इससे बाहर निकालने का प्रयास कर सकता हूं।
तीरंदाजी

1
मैं इसे आपको प्राप्त करूँगा, इसे खोदने में कुछ समय लगेगा। लेकिन दूसरों के उपयोग के लिए यहां उठना चाहिए। विनपी / वीबीए / का इसका कम नीचे और दुष्ट कॉम्बो / और मुझे लगता है कि मैंने इसे vb.dll के रूप में बनाया है, लेकिन इसकी कोई संभावना नहीं है कि इसे नेट पर उठाया जाए
आर्कलाइट

1
जाहिर तौर पर एक्सेल डेवलपमेंट टीम इस फीचर के लिए यहाँ वोट ले रही है: excel.uservoice.com/forums/…
Alain

जवाबों:


40

मैंने GitHub को Excel-DNA IntelliSense प्रोजेक्ट के रूप में एक प्रूफ-ऑफ-कॉन्सेप्ट प्रोजेक्ट पोस्ट किया है , इसे लागू करना।

उपयुक्त उपयोगकर्ता इंटरफ़ेस ईवेंट्स की निगरानी के लिए UI स्वचालन कक्षाओं का उपयोग करना, उपयुक्त होने पर एक फ़ॉर्म प्रदर्शित किया जाता है।

कोड को एक्सेल-डीएनए ऐड-इन के रूप में लपेटा गया है, और मेरे एक्सेल 2013 / विंडोज 8 मशीन पर काम करता है। मैंने एक दूसरे कॉन्फ़िगरेशन (विंडोज सर्वर 2008 पर 64-बिट एक्सेल 2010) पर परीक्षण किया है और एक गंभीर समस्या थी।

एक्सेल-डीएनए विशेषताओं के साथ परिभाषित एक C # फ़ंक्शन के लिए:

[ExcelFunction(Description = 
    "A useful test function that adds two numbers, and returns the sum.")]
public static double AddThem(
    [ExcelArgument(Name = "Augend", 
                   Description = "is the first number, to which will be added")] 
    double v1,
    [ExcelArgument(Name = "Addend", 
                   Description = "is the second number that will be added")]     
    double v2)
{
    return v1 + v2;
}

हम दोनों फ़ंक्शन विवरण प्राप्त करते हैं

समारोह विवरण

और फ़ंक्शन का चयन करते समय, हमें तर्क सहायता मिलती है

तर्क सहायता

यह अच्छा लग रहा है, लेकिन यह सब अभी भी बहुत परतदार है, केवल मेरी मशीन पर काम करता है और कभी-कभी एक्सेल को क्रैश करता है। यह एक शुरुआत हो सकती है, हालांकि ...


अपडेट 9 मई 2014:

मैंने कुछ प्रगति की है कि पुराने एक्सेल और विंडोज संस्करणों के तहत तर्क मदद का काम कैसे किया जाए। हालांकि, सब कुछ विश्वसनीय होने के लिए अभी भी काफी काम करने की आवश्यकता है। जो कोई भी इसके साथ मदद करना चाहेगा वह मुझसे सीधे संपर्क करे।


अपडेट 18 जून 2016:

Excel UDF IntelliSense, Excel-DNA ऐड-इन्स और VBA फ़ंक्शन दोनों के लिए अब परीक्षण किया जा रहा है। निर्देशों के लिए GitHub पर प्रारंभ करना पृष्ठ देखें ।


अफसोस की बात है कि यह एक्सेल 2013 या विंडोज 8 की तरह प्रतीत होता है या यूआई ऑटोमेशन टेक्स्टरेंज सपोर्ट के लिए जरूरी है जो तर्क मदद का उपयोग करता है। मैं किसी से भी सुनना पसंद करूंगा, जिसके पास कुछ विंडोज यूआई स्वचालन अनुभव है ...
जूल

क्या आपने पुरानी मशीनों को संकलित करने से पहले पुराने एक्सेल असेंबली का संदर्भ देने की कोशिश की?
डैनियल मोलर

1
एक्सेल ऑब्जेक्ट मॉडल के संदर्भ वास्तव में इसमें शामिल नहीं हैं। लेकिन निश्चित रूप से अलग-अलग यूआई स्वचालन संस्करण हैं जो चीजों को प्रभावित कर सकते हैं ...
नियंत्रित करें

1
यह अब तक की किसी भी चीज़ से आगे की सड़क है, इसलिए आप बाउंटी को मेरा वोट दें। मैं यह देखने का इरादा रखता हूं कि क्या मैं निकट भविष्य में इस समाधान में योगदान कर सकता हूं ताकि मेरे पुल अनुरोध के लिए नजर रखें!
एलन

@ शासन को अच्छा काम दो! & Alain मुझे यह देखकर आपको बहुत अच्छा लगेगा।
कोडकम्पर

1

कैसा रहेगा

  1. सेल के प्रमुख प्रेस ईवेंट पर इनपुट टेक्स्ट कैप्चर करें। इस तरह
  2. जांचें कि क्या पाठ कस्टम फ़ंक्शन के साथ मेल खाता है।
  3. यदि मिलान होता है, तो टूलटिप होने का दिखावा करने के लिए लेबल या आकृति जैसा कुछ दिखाएं। इस तरह

क्या यह स्वीकार्य है?

यह थोड़ा बदसूरत लेकिन आसान है।


यह एक दिलचस्प शुरुआती बिंदु है जिसे मैंने माना था, लेकिन जटिलताओं में तब भाग गया जब एक सूत्र को संपादित करने के अधिक उन्नत रूपों का सामना करना पड़ता है (जैसे कि बीच में कहीं क्लिक करना और वर्णों को हटाना, जोड़ना, या सूत्र के एक हिस्से को हाइलाइट करना और लिखना, या उपयोग करना किसी अन्य सूत्र के बीच में एक कस्टम सूत्र।) इनमें से अधिक की-प्रेस की जाँच की आवश्यकता होती है, हमें मध्य-बार में सूत्र पट्टी या सेल की वर्तमान सामग्री को देखना होगा। यह भी कुछ आयातित dll पुस्तकालयों और hackery हो रही संभाल के साथ पूरा किया जा सकता है। निश्चित रूप से खोज के लायक है।
अलीन

-1

XLL क्या है?

एक्सएलएल एक डीएलएल है जो एक्सेल या एक्सेल ऐड-इन मैनेजर द्वारा कहे जाने वाली कई प्रक्रियाओं का निर्यात करता है। http://msdn.microsoft.com/en-us/library/office/bb687861.aspx

आप XLL का विकास कैसे करते हैं?

एक्सेल एक्सएलएल एसडीके विज़ुअल सी ++ (या डीएलएल को संकलित करने और एसडीके प्रक्रियाओं को कॉल करने के लिए कुछ भी) के साथ

मुझे एक सरल XLL बनाने के लिए एक त्वरित गाइड कहां मिल सकता है?

http://support.microsoft.com/kb/178474

मैं टूलटिप्स कैसे प्राप्त करूं?

  1. एक प्रक्रिया के रूप में अपने कार्य को लागू करें और इसे निर्यात करें
  2. कार्यान्वयन और निर्यात प्रक्रिया xlAutoOpen (शून्य) - http://msdn.microsoft.com/en-us/library/office/bb687860.aspx
  3. xlAutoOpen को केवल xlfRegister को कॉल करने की आवश्यकता है - http://msdn.microsoft.com/en-us/library/office/bb687900.aspx
  4. टूलटिप्स के लिए, विशेष ध्यान दें: pxArgumentText, pxFunctionHelp, pxArgumentHelp1

अफसोस की बात है, विश्लेषण टूलपैक ऐड-इन में टूलटिप्स भी नहीं है।

मेरा समाधान गलत था, लेकिन मूल पोस्टर द्वारा गलत जानकारी पोस्ट की गई थी। BINOMDIST के साथ एक चित्र दिखा रहा है, यदि उसका लिंक स्पष्ट रूप से दिखाता है कि यह ANALYS32.xll का कार्य नहीं है।

इसका मतलब है कि मैं एक असंभव प्रश्न को हल करने की कोशिश कर रहा था। क्योंकि कोई XLL नहीं है जो पोस्टर द्वारा अनुरोध किया गया हो सकता है। यदि आपको एक्सेल का एक संस्करण मिलता है जो एक्सएलएल के टूलटिप्स दिखाता है, तो कृपया मुझे बताएं।

पोस्टर ने क्या पूछा, XLL के व्यवहार की नकल करने की कोशिश करते हुए, मुझे यकीन है कि मेरा जवाब ANALYS32.xll क्या करता है के संबंध में सबसे सही था।


3
अफसोस की बात है, xlfRegister के साथ UDF को पंजीकृत करने से Excel को उस जानकारी को इन-शीट इंटेलीजेंस टूलटिप्स के रूप में प्रदर्शित करने का कारण नहीं बनता है। वहाँ दर्ज किए गए विवरण इत्यादि केवल फंक्शन आर्ग्युमेंट्स डायलॉग बॉक्स में दिखाए जाते हैं, जो कि जब आप fx बटन दबाते हैं तो पॉप अप हो जाता है। लेकिन यह नहीं है कि मूल पोस्टर के बारे में क्या पूछ रहा है।
8

2016 में @Govert अभी भी इस तरह से है?
beppe9000

@ beppe9000 हां। आप UDFs (XLL या VBA में परिभाषित) के लिए इन-शीट IntelliSense टूलटिप्स एक्सेल-डीएनए IntelliSense एक्सटेंशन का उपयोग करके प्राप्त कर सकते हैं: github.com/Excel-DNA/IntelliSense
गवर्नमेंट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.