एमएस एक्सेल के लिए एक उन्नत VBA गाइड


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

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

<आंकड़ा वर्ग = "आलसी एलाइनकेटर आकार-बड़ा">

Microsoft Excel के लिए उन्नत VBA मार्गदर्शिका

Excel में VBA कोड लिखने का मुख्य लक्ष्य है ताकि आप जानकारी निकाल सकें स्प्रेडशीट से, उस पर कई प्रकार की गणना करें, और फिर परिणाम को स्प्रेडशीट पर वापस लिखें

एक्सेल में VBA के सबसे सामान्य उपयोग हैं।

  • डेटा आयात करें और गणना करें
  • एक बटन दबाने वाले उपयोगकर्ता से परिणामों की गणना करें
  • किसी व्यक्ति को ईमेल गणना परिणाम
  • इन तीन उदाहरणों के साथ, आपको चाहिए अपने स्वयं के उन्नत एक्सेल VBA कोड लिखने में सक्षम हो।

    डेटा आयात करना और गणना करना

    सबसे आम चीजों में से एक जिसका उपयोग लोग Excel के लिए करते हैं एक्सेल के बाहर मौजूद डेटा पर गणना कर रहा है। यदि आप VBA का उपयोग नहीं करते हैं, तो इसका मतलब है कि आपको डेटा मैन्युअल रूप से आयात करना होगा, गणनाओं को चलाना होगा और उन मानों को दूसरी शीट या रिपोर्ट में आउटपुट करना होगा।

    In_content_1 all: [300x250] / dfp [640x360]->

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

    निम्नलिखित आयात कोड होगा। अपनी एक्सेल स्प्रेडशीट में CSV फ़ाइल को चलाएं और आयात करें।

    Dim ws As Worksheet, strFile As String
    Set ws = ActiveWorkbook.Sheets("Sheet1") Cells.ClearContents strFile = “c:\temp\purchases.csv” With ws.QueryTables.Add(Connection:="TEXT;" & strFile, Destination:=ws.Range("A1")) .TextFileParseType = xlDelimited .TextFileCommaDelimiter = True .Refresh End With

    एक्सेल VBA संपादन उपकरण खोलें और Sheet1 ऑब्जेक्ट का चयन करें। ऑब्जेक्ट और विधि ड्रॉपडाउन बॉक्स से, कार्यपत्रकऔर सक्रिय करेंचुनें। आपके द्वारा स्प्रेडशीट को खोलने पर हर बार यह कोड चलेगा।

    यह एक सब वर्कशीट_एक्टिवेट ()फ़ंक्शन बनाएगा। उस फ़ंक्शन में उपरोक्त कोड पेस्ट करें।

    <आंकड़ा वर्ग = "आलसी संरेखण आकार-बड़ा">figure / div>

    यह सक्रिय वर्कशीट को Sheet1पर सेट करता है, शीट को साफ करता है, फ़ाइल को उस पथ से जोड़ता है जिसे आपने strFileचर के साथ परिभाषित किया है, और फिर फ़ाइल में प्रत्येक पंक्ति के माध्यम सेलूप चक्र के साथ और सेल A1 पर शुरू होने वाली शीट में डेटा को रखता है।

    यदि आप इस कोड को चलाते हैं, तो आप देखेंगे कि CSV फ़ाइल डेटा Sheet1

    में आपकी रिक्त स्प्रेडशीट में आयात किया जाता है
    <आंकड़ा वर्ग = "आलसी संरेखण आकार-बड़ा">

    आयात केवल पहला चरण है । अगला, आप उस कॉलम के लिए एक नया हेडर बनाना चाहते हैं जिसमें आपके गणना परिणाम होंगे। इस उदाहरण में, मान लें कि आप प्रत्येक आइटम की बिक्री पर दिए गए 5% करों की गणना करना चाहते हैं।

    आपके कोड की कार्रवाई का क्रम है:

    1. बनाएं नए परिणाम कॉलम करों
    2. इकाइयों के माध्यम से लूपकॉलम बेचा और बिक्री कर की गणना।
    3. गणना परिणामों को लिखें। शीट में उपयुक्त पंक्ति के लिए।
    4. निम्नलिखित कोड इन सभी चरणों को पूरा करेगा।

      Dim LastRow As Long
      Dim StartCell As Range
      Dim rowCounter As Integer
      Dim rng As Range, cell As Range
      Dim fltTax As Double

      Set StartCell = Range("A1")

      'Find Last Row and Column
      LastRow = ws.Cells(ws.Rows.Count, StartCell.Column).End(xlUp).Row
      Set rng = ws.Range(ws.Cells(2, 4), ws.Cells(LastRow, 4))

      rowCounter = 2
      Cells(1, 5) = "taxes"

      For Each cell In rng
      fltTax = cell.Value * 0.05
      Cells(rowCounter, 5) = fltTax
      rowCounter = rowCounter + 1
      Next cell

      यह कोड अंतिम पंक्ति पाता है आपके डेटा की शीट में, और फिर डेटा की पहली और अंतिम पंक्ति के अनुसार कोशिकाओं की श्रेणी (बिक्री मूल्य के साथ कॉलम) सेट करता है। फिर कोड उन कोशिकाओं में से प्रत्येक के माध्यम से लूप करता है, कर गणना करता है और अपने नए कॉलम (कॉलम 5) में परिणाम लिखता है।

      उपरोक्त VBA कोड को पिछले कोड के नीचे चिपकाएँ, और स्क्रिप्ट चलाएँ। आप कॉलम E में दिखाए गए परिणाम देखेंगे।

      <आंकड़ा वर्ग = "आलसी संरेखण आकार-बड़ा">

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

      बटन प्रेस से परिणाम की गणना करें

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

      नियंत्रण बटन उपयोगी हैं यदि आप नियंत्रित करना चाहते हैं कि कौन सी गणना का उपयोग किया जाता है। उदाहरण के लिए, ऊपर दिए गए इस मामले में, यदि आप एक क्षेत्र के लिए 5% कर की दर, और दूसरे के लिए 7% कर की दर का उपयोग करना चाहते हैं, तो आप उसी CSV आयात कोड को अनुमति दे सकते हैं। स्वचालित रूप से चलाएं, लेकिन जब आप उपयुक्त बटन दबाते हैं तो चलाने के लिए कर गणना कोड छोड़ दें।

      ऊपर के समान स्प्रेडशीट का उपयोग करके डेवलपरटैब चुनें, और सम्मिलित करें चुनें रिबन मेंनियंत्रणसमूह से। ड्रॉपडाउन मेनू से पुश बटनActiveX नियंत्रण का चयन करें।

      = "lazz wp-block-image"><आंकड़ा वर्ग = "आलसी संरेखण आकार-बड़ा">

      पुशबटन को शीट के किसी भी हिस्से पर दूर रखें जहां से कोई डेटा जाएगा।

      <आंकड़ा वर्ग = "आलसी संरेखण आकार-बड़ा">

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

      <आंकड़ा वर्ग = "आलसी संरेखण आकार-बड़ा">

      आपको यह पाठ पुश बटन पर ही दिखाई देगा। गुणविंडो बंद करें, और पुशबटन को डबल-क्लिक करें। यह कोड संपादक विंडो खोलेगा, और आपका कर्सर उस फ़ंक्शन के अंदर होगा जो उपयोगकर्ता द्वारा पुशबटन को दबाए जाने पर चलेगा। / />

      इस फ़ंक्शन में ऊपर से अनुभाग से कर गणना कोड चिपकाएं, कर दर को ०.०५ पर गुणक रखता है। सक्रिय पत्रक को परिभाषित करने के लिए निम्नलिखित 2 पंक्तियों को शामिल करना याद रखें।

      Dim ws As Worksheet, strFile As String

      Set ws = ActiveWorkbook.Sheets("Sheet1")

      अब, प्रक्रिया को फिर से दोहराएं, दूसरा पुश बटन बनाकर। कैप्शन बनाएं 7% टैक्सकी गणना करें।

      <आंकड़ा वर्ग = "आलसी एलाइनकेंटर साइज-लार्ज">

      उस बटन पर डबल-क्लिक करें और समान कोड पेस्ट करें, लेकिन कर गुणक 0.07 बनाएं।

      अब, आप कौन सा बटन दबाते हैं, इस पर निर्भर करता है कि टैक्स कॉलम क्या होगा तदनुसार गणना करें।

      <आंकड़ा वर्ग = "आलसी संरेखण आकार-बड़ा">

      एक बार जब आप कर लेते हैं, तो आपके पास अपनी शीट पर दोनों पुश बटन होंगे। उनमें से प्रत्येक एक अलग कर गणना शुरू करेगा और परिणाम कॉलम में अलग-अलग परिणाम लिखेगा।

      इसे पाठ करने के लिए, डेवलपरमेनू का चयन करें, और डिज़ाइन मोडचुनें डिज़ाइन मोड। यह पुश बटन को सक्रिय करेगा।

      यह देखने के लिए प्रत्येक पुश बटन को चुनने का प्रयास करें कि "कर" परिणाम कॉलम कैसे बदलता है।

      किसी के लिए ईमेल गणना परिणाम

      क्या अगर आप ईमेल के माध्यम से किसी को स्प्रेडशीट पर परिणाम भेजना चाहते हैं?

      <आंकड़ा वर्ग = "आलसी wp-block-image size-large">

      आप ऊपर एक ही प्रक्रिया का उपयोग करके ईमेल शीट को बॉसनामक एक और बटन बना सकते हैं। इस बटन के लिए कोड में एसएमटीपी ईमेल सेटिंग्स को कॉन्फ़िगर करने के लिए एक्सेल सीडीओ ऑब्जेक्ट का उपयोग करना, और उपयोगकर्ता-पठनीय प्रारूप में परिणामों को ईमेल करना शामिल होगा।

      इस सुविधा को सक्षम करने के लिए, आपको टूल और चयन करना होगा। संदर्भ। Windows 2000 लाइब्रेरी के लिए Microsoft CDOपर स्क्रॉल करें, इसे सक्षम करें और OK / / strong>का चयन करें।

      <आंकड़ा वर्ग = "lazy wp-block-image">

      कोड के तीन मुख्य खंड हैं जो आपको ईमेल भेजने और स्प्रेडशीट परिणामों को एम्बेड करने के लिए बनाने की आवश्यकता है।

      सबसे पहले धारण करने के लिए चर सेट कर रहा है। विषय, पते से, और ईमेल निकाय।

      Dim CDO_Mail As Object
      Dim CDO_Config As Object
      Dim SMTP_Config As Variant
      Dim strSubject As String
      Dim strFrom As String
      Dim strTo As String
      Dim strCc As String
      Dim strBcc As String
      Dim strBody As String
      Dim LastRow As Long
      Dim StartCell As Range
      Dim rowCounter As Integer
      Dim rng As Range, cell As Range
      Dim fltTax As Double
      Set ws = ActiveWorkbook.Sheets("Sheet1")
      strSubject = "Taxes Paid This Quarter"
      strFrom = "[email protected]"
      strTo = "[email protected]"
      strCc = ""
      strBcc = ""
      strBody = "The following is the breakdown of taxes paid on sales this quarter."

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

      Set StartCell = Range("A1")
      'Find Last Row and Column LastRow = ws.Cells(ws.Rows.Count, StartCell.Column).End(xlUp).Row Set rng = ws.Range(ws.Cells(2, 4), ws.Cells(LastRow, 4)) rowCounter = 2 strBody = strBody & vbCrLf For Each cell In rng strBody = strBody & vbCrLf strBody = strBody & "We sold " & Cells(rowCounter, 3).Value & " of " & Cells(rowCounter, 1).Value _ & " for " & Cells(rowCounter, 4).Value & " and paid taxes of " & Cells(rowCounter, 5).Value & "." rowCounter = rowCounter + 1 Next cell

      अगले भाग में SMTP सेटिंग्स सेट करना शामिल है ताकि आप अपने SMTP सर्वर के माध्यम से ईमेल भेज सकें। यदि आप जीमेल का उपयोग करते हैं, तो यह आमतौर पर आपका जीमेल ईमेल पता, आपका जीमेल पासवर्ड और जीमेल एसएमटीपी सर्वर (smtp..mailmail.com) है।

      Set CDO_Mail = CreateObject("CDO.Message") 
      On Error GoTo Error_Handling Set CDO_Config = CreateObject("CDO.Configuration") CDO_Config.Load -1 Set SMTP_Config = CDO_Config.Fields With SMTP_Config .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com" .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "[email protected]" .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "password" .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465 .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True  .Update End With With CDO_Mail Set .Configuration = CDO_Config End With

      बदलें [email protected] और अपने स्वयं के खाता विवरण के साथ पासवर्ड।

      अंत में, ईमेल भेजने के लिए, निम्नलिखित कोड डालें।

      CDO_Mail.Subject = strSubject
      CDO_Mail.From = strFrom
      CDO_Mail.To = strTo
      CDO_Mail.TextBody = strBody
      CDO_Mail.CC = strCc
      CDO_Mail.BCC = strBcc
      CDO_Mail.Send

      Error_Handling:
      If Err.Description <> "" Then MsgBox Err.Description

      नोट: यदि आप इस कोड को चलाने का प्रयास करते समय कोई ट्रांसपोर्ट त्रुटि देखते हैं, तो इसकी संभावना है क्योंकि आपका Google खाता "कम सुरक्षित ऐप्स" को चलने से रोक रहा है। आपको कम सुरक्षित ऐप्स सेटिंग पृष्ठ पर जाना होगा और इस सुविधा को चालू करना होगा।

      इसके सक्षम होने के बाद, आपका ईमेल भेज दिया जाएगा यह वही है जो उस व्यक्ति को दिखता है जो आपके स्वचालित रूप से उत्पन्न परिणाम ईमेल प्राप्त करता है।

      <आंकड़ा वर्ग = "आलसी संरेखण आकार-बड़ा">

      आप देख सकते हैं वहाँ एक बहुत आप वास्तव में एक्सेल VBA के साथ स्वचालित कर सकते हैं है। इस लेख में आपके द्वारा सीखे गए कोड स्निपेट्स के साथ खेलने की कोशिश करें और अपना विशिष्ट VBA ऑटोमेशन बनाएं।

      🔥 8 Most Useful Excel Formulas With Examples In Hindi - Every Excel User Should Know

      संबंधित पोस्ट:

      सर्वश्रेष्ठ VBA गाइड (शुरुआती के लिए) आप कभी भी आवश्यकता होगी एक्सेल में VBA ऐरे क्या है और प्रोग्राम वन कैसे है 5 Google पत्रक स्क्रिप्ट फ़ंक्शंस जो आपको जानना आवश्यक है एक्सेल में VBA मैक्रो या स्क्रिप्ट कैसे बनाएं Google डॉक्स में टेबल से बॉर्डर कैसे निकालें Google ट्रैक्स का उपयोग कैसे करें एक व्यय ट्रैकर के रूप में 10 तरीके आपके PowerPoint स्लाइड शो को अधिक बनाने के लिए

      11.02.2020