एक्सेल हैडर को बदलने के लिए इवेंट मैक्रो - एक्सेल टिप्स

विषय - सूची

मिसौरी से डोना ने पूछा:

क्या आपके पास कोई विचार है कि मैं वह पथ कैसे प्राप्त कर सकता हूं जहां दस्तावेज़ को हेडर या फुटर में इंगित किया गया है - या दस्तावेज़ में कहीं भी। मैं फ़ाइल का नाम & f के साथ प्राप्त कर सकता हूं लेकिन मैं यह पता लगाने में असमर्थ हूं कि पथ कैसे करना है।

सबसे पहले, मैं समझता हूं कि Microsoft ने इस कार्यक्षमता को एक्सेल एक्सपी में जोड़ा है और मैं उन्हें कुडोस प्रदान करता हूं क्योंकि यह अक्सर पूछे जाने वाली समस्या है। जो भी पाठक पहले से ही Office XP में अपग्रेड हो चुके हैं, उन्हें इस समस्या को हल करने के लिए इस सप्ताह की टिप में तकनीकों की आवश्यकता नहीं होगी, लेकिन फिर भी वे अन्य समस्याओं को हल करने के लिए उपयोगी होंगे।

इस टिप का समाधान एक विशेष प्रकार का मैक्रो है जिसे इवेंट हैंडलर मैक्रो कहा जाता है। हम हर बार एक्सेल पर नियंत्रण रखने के लिए जा रहे हैं, जो हमारी कार्यपुस्तिका को प्रिंट करने और हेडर के वर्तमान पथ को जोड़ने के बारे में है।

कई एक्सेल उपयोगकर्ताओं ने सरल मैक्रोज़ रिकॉर्ड करने में डब किया है। मैक्रोज़ को मॉड्यूल 1 या मॉड्यूल 2 नामक मॉड्यूल में संग्रहीत किया जाता है और आपकी परियोजना का हिस्सा बन जाता है। आज, मैं इवेंट हैंडलर मैक्रोज़ पर चर्चा करने जा रहा हूं। ये मैक्रोज़ एक विशेष कोड मॉड्यूल पर रहते हैं जो प्रत्येक वर्कशीट या वर्कबुक से जुड़ा होता है।

विगत युक्तियाँ जैसे कि एक्सेल समय दर्ज करें बिना कर्नल टिप के वर्कशीट_चेंज घटना से निपटा है। आज की टिप के लिए आवश्यक है कि हम वर्कबुक के प्रायरप्रिंट इवेंट में कुछ कोड जोड़ें।

किसी ईवेंट में जोड़ा गया कोड तब चलाया जाएगा जब उस ईवेंट को "निकाल दिया जाएगा"। इस स्थिति में, कभी भी जब एक्सेल वर्कबुक प्रिंट की जाती है, तो प्रिंटिंग शुरू होने से पहले, एक्सेल VBA कोड पर नियंत्रण कर देता है और कुछ भी आप VBA कोड में निर्दिष्ट कर सकते हैं, जो प्रिंटिंग से पहले स्वचालित रूप से होता है।

मैं मानने जा रहा हूँ कि आप हैंडलर मैक्रोज़ के लिए नए हैं। मैं इस मैक्रो में प्रवेश करने के लिए सही जगह पर कैसे पहुंचा जा सकता हूं।

मेरे पास एक कार्यपुस्तिका है, जिसका नाम 'टिप 0555 नमूना है।' Excel में लोड की गई कार्यपुस्तिका के साथ, मैं विज़ुअल बेसिक एडिटर को शुरू करने के लिए alt = "" + F11 हिट करने जा रहा हूं। संपादक का डिफ़ॉल्ट रूप सही रूप में दिखाया गया है। बाईं ओर, आपको आमतौर पर एक प्रोजेक्ट फलक दिखाई देता है जो कि गुण फलक के शीर्ष पर खड़ी होती है। स्क्रीन के दाईं ओर के अधिकांश हिस्से में एक कोड फलक शामिल है। यदि आपकी कार्यपुस्तिका में कोई मैक्रोज़ नहीं है, तो आपका कोड फलक ग्रे होगा जैसा कि दाईं ओर दिखाया गया है।

मैंने तीन पैन की पहचान करने के लिए छवि पर नीले इटैलिक स्क्रिप्ट शब्द जोड़े हैं - आप इन्हें अपने उदाहरण में नहीं देखेंगे।

यह महत्वपूर्ण है कि आप VB एडिटर में प्रोजेक्ट पेन देख सकते हैं। यदि VB एडिटर के आपके विचार में प्रोजेक्ट पेन शामिल नहीं है, तो प्रोजेक्ट पेन देखने के लिए Ctrl + R दबाएं। या, नीचे दिखाए गए टूलबार आइकन पर क्लिक करें:

प्रोजेक्ट फलक हर खुली Excel कार्यपुस्तिका और प्रत्येक स्थापित ऐड-इन के लिए एक प्रोजेक्ट दिखाएगा। अपनी कार्यपुस्तिका के लिए प्रोजेक्ट का विस्तार करने के लिए अपनी कार्यपुस्तिका के नाम के आगे वाले ग्रे पर क्लिक करें। फिर, ऑब्जेक्ट फ़ोल्डर का विस्तार करने के लिए Microsoft Excel ऑब्जेक्ट फ़ोल्डर के आगे ग्रे प्लस पर क्लिक करें। अब आपको प्रत्येक वर्कशीट के लिए एक प्रविष्टि और एक प्रविष्टि जिसे यह वोर्कबुक कहा जाता है, देखना चाहिए।

ThisWorkbook के लिए प्रवेश पर राइट-क्लिक करें और पॉप-अप मेनू से व्यू कोड चुनें।

अब आपके पास स्क्रीन के दाईं ओर एक बड़ा खाली सफेद कोड पेन होगा। कोड फलक के शीर्ष पर दो ड्रॉपडाउन होंगे जो कहेंगे (सामान्य) और (घोषणाएँ)।

  • बाएं ड्रॉपडाउन से, कार्यपुस्तिका चुनें।
  • सही ड्रॉपडाउन अब कार्यपुस्तिका से जुड़ी सभी प्रोग्राम योग्य घटनाओं के साथ आबाद है। यहां ऐसी घटनाएं हैं जो किसी भी समय कार्यपुस्तिका खोले जाने, सक्रिय होने, निष्क्रिय होने आदि के लिए कोड चलाएगी। आज, हम प्रीप्रिंट इवेंट में कोड लिखना चाहते हैं, इसलिए राइट ड्रॉपडाउन से पहले प्रीप्रिंट चुनें।

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

अब, VBA कोड लिखने पर। कुछ उपयोगी चर हैं जिनका आप उपयोग कर सकते हैं।

  • ActiveWorkbook.Path कार्यपुस्तिका का पथ लौटाएगा। यह "C: My Documents MrExcel" की तरह लग सकता है।
  • ActiveWorkbook.FullName कार्यपुस्तिका का पथ और फ़ाइल नाम लौटाएगा। यह "C: My Documents MrExcel Tip055 Sample.xls" की तरह लग सकता है।

आप इस चर को निम्नलिखित 6 पदों में से एक में से एक में निर्दिष्ट कर सकते हैं:

Worksheets("Sheet1").PageSetup.LeftHeader = ActiveWorkbook.FullName Worksheets("Sheet1").PageSetup.CenterHeader = ActiveWorkbook.FullName Worksheets("Sheet1").PageSetup.RightHeader = ActiveWorkbook.FullName Worksheets("Sheet1").PageSetup.LeftFooter = ActiveWorkbook.FullName Worksheets("Sheet1").PageSetup.CenterFooter = ActiveWorkbook.FullName Worksheets("Sheet1").PageSetup.RightFooter = ActiveWorkbook.FullName

यहाँ तीन संभावित नमूना मैक्रोज़ हैं।

इस मैक्रो में सक्रिय वर्कशीट के दाहिने पायदान के रूप में पथ और फ़ाइल नाम जोड़ा जाएगा:

Private Sub Workbook_BeforePrint(Cancel As Boolean) ActiveSheet.PageSetup.RightFooter = ActiveWorkbook.FullName End Sub

इस मैक्रो में शीट 1 के बाएं हेडर के रूप में और शीट 2 के केंद्र पाद लेख के रूप में जोड़ा जाएगा:

Private Sub Workbook_BeforePrint(Cancel As Boolean) Worksheets("Sheet1").PageSetup.LeftHeader = ActiveWorkbook.Path Worksheets("Sheet2").PageSetup.CenterFooter = ActiveWorkbook.Path End Sub

यदि आप मुद्रण करते समय "संपूर्ण कार्यपुस्तिका" विकल्प का उपयोग करते हैं, तो यह संस्करण पूरे नाम को केंद्र पाद लेख के रूप में सभी पत्रक में जोड़ देगा:

Private Sub Workbook_BeforePrint(Cancel As Boolean) For Each Sh In ActiveWorkbook.Worksheets Sh.PageSetup.CenterFooter = ActiveWorkbook.FullName Next Sh End Sub

इन उदाहरणों में से एक का पालन करें या अपना खुद का बनाएं। जब आप समाप्त कर लें, तो फ़ाइल के साथ VBA संपादक बंद करें और Microsoft Excel में वापस लौटें।

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

कुछ नोट और चेतावनी:

  • नौसिखिए एक्सेल उपयोगकर्ताओं को यह पता नहीं होगा कि यह कोड कार्यपुस्तिका में है। जब वे कार्यपुस्तिका खोलते हैं, तो उन्हें सुरक्षा चेतावनी मिल सकती है कि फ़ाइल में मैक्रोज़ हैं, लेकिन कोई चेतावनी नहीं होगी जब वीबीए कोड केंद्र पाद लेख के रूप में जो कुछ भी हो, वह बेकार हो जाता है और पथनाम डाल देता है। इससे आपको नाराज़गी हो सकती है। अब से 5 साल की कल्पना करें कि कोई व्यक्ति आपकी कार्यपुस्तिका का उपयोग कर रहा है और नया प्रबंधक चाहता है कि फ़ाइल नाम केंद्र पाद लेख से दाहिने पाद पर ले जाए। यह व्यक्ति फ़ाइल> PageSetup में सेटिंग्स को मैन्युअल रूप से बदलना जान सकता है, लेकिन यदि उन्हें पता नहीं है कि कोड है, तो यह उन्हें बैट्री चलाएगा क्योंकि कोड लगातार उनके पाद को बदल देता है।

    It is really unlikely that they will be able to find your code module, but just in case they do, you might want to leave a comment in the code module that directs them back to this website for an explanation.

    You also might want to add a comment to cell A1 reminding yourself that there is an event handler set up to change the print headers.

  • There is a setting within VBA which prevents events from running. If your macro suddenly stops working, t is common to find that something within VBA has turned this setting to prevent the events from running. The common scenario is that a programmer starts a macro with:

    Application.EnableEvents = False '… macro here… Application.EnableEvents = True

    जब मैक्रो में कोई त्रुटि होती है, तो ईवेंट कभी भी चालू नहीं होते हैं। जब ऐसा होता है, तो थोड़ी चेतावनी होती है। यदि आपको संदेह है कि आपके ईवेंट हैंडलर्स को निष्पादित नहीं किया जा रहा है, तो विज़ुअल बेसिक एडिटर पर जाएं। तत्काल फलक लाने के लिए Ctrl + g दबाएं। तत्काल फलक में, टाइप करें:

    Print Application.EnableEvents

    और हिट दर्ज करें। यदि आप पाते हैं कि यह गलत पर सेट है, तो तत्काल फलक में निम्न पंक्ति टाइप करें:

    Application.EnableEvents = True

    और हिट दर्ज करें।

एक महान प्रश्न के लिए डोना का धन्यवाद। उत्तर की व्याख्या करने की प्रक्रिया में, यह VBA में इवेंट हैंडलर्स की अवधारणा पर विस्तार करने का एक शानदार अवसर था।

दिलचस्प लेख...