
एक समय में 5 से 10 लोगों को ईमेल करना आमतौर पर प्रबंधनीय होता है। लेकिन 30, 50, या 500 लोगों को थोड़े अलग नाम, तारीखें, ऑफ़र, रिमाइंडर, या फॉलो-अप नोट्स के साथ ईमेल करना वह जगह है जहां प्रक्रिया धीमी और त्रुटि-प्रवण हो जाती है। यहीं पर Excel और VBA एक शक्तिशाली संयोजन बन जाते हैं। एक सुव्यवस्थित वर्कशीट और VBA कोड के साथ, आप स्प्रेडशीट पंक्तियों को व्यक्तिगत Outlook ईमेल में बदल सकते हैं, जिसमें कस्टम सब्जेक्ट लाइन, बॉडी टेक्स्ट, और वैकल्पिक अटैचमेंट शामिल हैं।
इस ट्यूटोरियल में, हम दिखाएंगे कि Excel ईमेल जनरेटर कैसे बनाया जाए, जिसमें VBA का उपयोग करके स्प्रेडशीट पंक्तियों से व्यक्तिगत Outlook संदेश बनाए जाते हैं। लक्ष्य प्रत्येक पंक्ति में संग्रहीत डेटा के आधार पर व्यक्तिगत Outlook ईमेल को स्वचालित करना है।
चरण 1: अपनी Excel स्प्रेडशीट सेट करना
अपने डेटा को इस तरह संरचित करें कि VBA इसे आसानी से पढ़ सके। हम "Data" नामक एक साधारण वर्कशीट मान लेंगे जिसमें निम्नलिखित कॉलम होंगे, जो पंक्ति 2 से शुरू होते हैं और पंक्ति 1 का उपयोग हेडर के लिए करते हैं:
इस तरह एक वर्कशीट बनाएँ:

इन कॉलम को अपने उपयोग के मामले के लिए समायोजित किया जा सकता है, लेकिन हेडिंग को स्पष्ट और सुसंगत रखें।
चरण 2: अपना ईमेल टेम्पलेट डिज़ाइन करना
कोई भी VBA कोड लिखने से पहले, तय करें कि ईमेल कैसा दिखना चाहिए।
यहाँ एक साधारण ऑर्डर पुष्टिकरण टेम्पलेट है:
सब्जेक्ट टेम्पलेट:
Your Order Confirmation - #{OrderID} बॉडी टेम्पलेट:
<p>Dear {Name},</p> <p>Thank you for your recent purchase!</p> <p>We are happy to confirm your order details:</p> <ul> <li><strong>Order ID:</strong> {OrderID}</li> <li><strong>Total Amount:</strong> {Amount}</li> </ul> <p>Your order is now being processed and should ship within 2–3 business days.</p> <p>If you have any questions, feel free to reply to this email.</p> <p>Best regards,<br> Shamima<br> Customer Support Team<br> Your Company Name<br> Phone: +880-XXX-XXXXXXX</p> - कोष्ठक में प्लेसहोल्डर प्रत्येक Excel पंक्ति से लिए गए मान हैं।
- VBA में, आप उन प्लेसहोल्डर को वास्तविक सेल मानों से बदल देंगे।
यदि आपका टेम्पलेट जटिल है, तो आप इसे एक अलग वर्कशीट में स्टोर कर सकते हैं या फ़ाइल से पढ़ सकते हैं। सरलता के लिए, हम इसे एक सेल में स्टोर करेंगे।

चरण 3: Outlook रेफरेंस को समझना
कोई भी कोड लिखने से पहले, यह समझने में मदद मिलती है कि Excel Outlook के ऑब्जेक्ट लाइब्रेरी से कैसे जुड़ सकता है।
- VBA एडिटर खोलें।
- Developer टैब पर जाएँ >> Visual Basic चुनें या Alt + F11 दबाएँ।
- Tools मेनू पर जाएँ >> References चुनें।
- नीचे स्क्रॉल करें और "Microsoft Outlook XX.X Object Library" चेक करें यदि आप अर्ली बाइंडिंग और Outlook-विशिष्ट ऑब्जेक्ट प्रकारों का उपयोग करना चाहते हैं।
- OK पर क्लिक करें।

यह रेफरेंस VBA को Outlook के पूर्ण ऑब्जेक्ट मॉडल तक पहुँच प्रदान करता है, जिसमें मेल आइटम, अटैचमेंट और फ़ोल्डर शामिल हैं। हालांकि, इस ट्यूटोरियल में कोड उदाहरण CreateObject("Outlook.Application") के साथ लेट बाइंडिंग का उपयोग करते हैं, इसलिए यहां दिखाए गए कोड के लिए Outlook रेफरेंस सेट करना वैकल्पिक है।
सुरक्षा नोट: ईमेल स्वचालित करने से Outlook सुरक्षा संकेत ट्रिगर हो सकते हैं। कई वातावरणों में, यह व्यवहार Outlook सुरक्षा सेटिंग्स और संगठनात्मक नीतियों पर निर्भर करता है। वास्तविक प्राप्तकर्ताओं के साथ उपयोग करने से पहले अपने मैक्रो को सुरक्षित वातावरण में हमेशा परीक्षण करें।
चरण 4: व्यक्तिगत Outlook ईमेल उत्पन्न करने के लिए VBA कोड लिखना
- Developer टैब पर जाएँ >> Visual Basic चुनें।
- Insert मेनू पर जाएँ >> Module चुनें।
- नए मॉड्यूल में अपना VBA कोड पेस्ट करें।
- यह स्क्रिप्ट पंक्तियों के माध्यम से लूप करती है और Outlook के माध्यम से ईमेल बनाती है।
VBA कोड:
Sub SendPersonalizedEmails() Dim OutlookApp As Object Dim OutlookMail As Object Dim ws As Worksheet Dim lastRow As Long Dim i As Long Dim subject As String Dim body As String Dim recipient As String Dim customerName As String Dim orderID As String Dim amount As String On Error GoTo ErrorHandler Set OutlookApp = CreateObject("Outlook.Application") Set ws = ThisWorkbook.Sheets("Data") ' शीट नाम बदलें यदि अलग है ' अंतिम पंक्ति खोजें (कॉलम A - ईमेल के आधार पर) lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row For i = 2 To lastRow recipient = Trim(ws.Cells(i, 1).Value) ' ईमेल customerName = Trim(ws.Cells(i, 2).Value) ' नाम subject = Trim(ws.Cells(i, 3).Value) ' सब्जेक्ट orderID = Trim(ws.Cells(i, 4).Value) ' OrderID amount = Trim(ws.Cells(i, 5).Value) ' राशि ' पंक्ति छोड़ें यदि कोई वैध ईमेल नहीं है If recipient = "" Or InStr(recipient, "@") = 0 Then GoTo NextRow ' सब्जेक्ट को व्यक्तिगत करें subject = Replace(subject, "#{OrderID}", orderID) ' सेल मानों से सीधे बॉडी बनाएँ body = "Dear " & customerName & "," & vbCrLf & vbCrLf & _ "Thank you for your order." & vbCrLf & vbCrLf & _ "Here are your order details:" & vbCrLf & _ "Order ID: " & orderID & vbCrLf & _ "Amount: " & amount & vbCrLf & vbCrLf & _ "We appreciate your business and will contact you if any further action is needed." & vbCrLf & vbCrLf & _ "Best regards," & vbCrLf & _ "Customer Support Team" ' ईमेल बनाएँ और भेजें Set OutlookMail = OutlookApp.CreateItem(0) ' olMailItem With OutlookMail .To = recipient .Subject = subject .Body = body .Display ' ईमेल दिखाता है ताकि आप इसे मैन्युअली समीक्षा कर सकें '.Send ' जब आप स्वचालित रूप से भेजने के लिए तैयार हों तो अनकमेंट करें End With Set OutlookMail = Nothing NextRow: Next i MsgBox "All emails processed. Check Outlook for the displayed messages.", vbInformation CleanUp: Set OutlookMail = Nothing Set OutlookApp = Nothing Exit Sub ErrorHandler: MsgBox "An error occurred: " & Err.Description, vbCritical Resume CleanUp End Sub 
यह VBA कोड Outlook से जुड़ता है और वर्कशीट में प्रत्येक उपयोग की गई पंक्ति के माध्यम से लूप करता है। यह नाम, ईमेल, सब्जेक्ट, ऑर्डर आईडी, और राशि जैसे मान पढ़ता है। फिर यह उन मानों का सीधे उपयोग करके एक व्यक्तिगत सब्जेक्ट और बॉडी बनाता है। अंत में, यह ईमेल प्रदर्शित कर सकता है, एक छोटे संशोधन के साथ ड्राफ्ट के रूप में सहेज सकता है, या इसे भेज सकता है। अधिकांश व्यावसायिक वर्कफ़्लो के लिए, .Display से शुरू करना सबसे अच्छा है क्योंकि यह आपको भेजने से पहले प्रत्येक संदेश की समीक्षा करने देता है।
चरण 5: अपने संदेश को पुन: प्रयोज्य टेम्पलेट सिस्टम में बदलना
एक ईमेल बॉडी को हार्डकोड करना काम करता है, लेकिन एक अधिक लचीला Excel ईमेल जनरेटर टेम्पलेट को वर्कशीट के अंदर स्टोर करता है। ईमेल टेम्पलेट के लिए एक सेल जोड़ें, फिर बेस टेम्पलेट को उस सेल में टेक्स्ट के रूप में पेस्ट करें। डायनामिक प्रतिस्थापन के लिए कर्ली ब्रेसिज़ में प्लेसहोल्डर का उपयोग करें:
- कोड को दूसरे Module में डालें।
VBA कोड:
Sub SendPersonalizedEmails_Template() Dim OutlookApp As Object Dim OutlookMail As Object Dim ws As Worksheet Dim lastRow As Long Dim i As Long Dim emailTemplate As String Dim subject As String Dim body As String Dim recipient As String Dim customerName As String Dim orderID As String Dim amount As String On Error GoTo ErrorHandler Set OutlookApp = CreateObject("Outlook.Application") Set ws = ThisWorkbook.Sheets("Data") ' शीट नाम बदलें यदि अलग है ' अंतिम पंक्ति खोजें (कॉलम A - ईमेल के आधार पर) lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row ' सेल F2 से टेम्पलेट प्राप्त करें (यदि आपने इसे कहीं और रखा है तो सेल रेफरेंस समायोजित करें) emailTemplate = ws.Range("F2").Value If emailTemplate = "" Then MsgBox "Email template is empty. Please add it to cell F2.", vbExclamation Exit Sub End If For i = 2 To lastRow recipient = Trim(ws.Cells(i, 1).Value) customerName = Trim(ws.Cells(i, 2).Value) subject = Trim(ws.Cells(i, 3).Value) orderID = Trim(ws.Cells(i, 4).Value) amount = Trim(ws.Cells(i, 5).Value) ' पंक्ति छोड़ें यदि कोई वैध ईमेल नहीं है If recipient = "" Or InStr(recipient, "@") = 0 Then GoTo NextRow ' सब्जेक्ट को व्यक्तिगत करें subject = Replace(subject, "#{OrderID}", orderID) ' बॉडी को व्यक्तिगत करें body = emailTemplate body = Replace(body, "{Name}", customerName) body = Replace(body, "{OrderID}", orderID) body = Replace(body, "{Amount}", amount) ' आवश्यकता होने पर अन्य प्लेसहोल्डर के लिए अधिक Replace() लाइनें जोड़ें ' ईमेल बनाएँ और भेजें Set OutlookMail = OutlookApp.CreateItem(0) ' olMailItem With OutlookMail .To = recipient .Subject = subject .HTMLBody = body '.CC = "[email protected]" '.Attachments.Add "C:\Invoices\" & orderID & ".pdf" ' वैकल्पिक .Display ' ईमेल दिखाता है ताकि आप इसे मैन्युअली समीक्षा कर सकें '.Send ' जब आप स्वचालित रूप से भेजने के लिए तैयार हों तो अनकमेंट करें End With Set OutlookMail = Nothing NextRow: Next i MsgBox "All emails processed. Check Outlook for the displayed messages.", vbInformation CleanUp: Set OutlookMail = Nothing Set OutlookApp = Nothing Exit Sub ErrorHandler: MsgBox "An error occurred: " & Err.Description, vbCritical Resume CleanUp End Sub - टेम्पलेटेड ईमेल का पूर्वावलोकन करने के लिए Run आइकन पर क्लिक करें।

मुख्य कोड व्याख्या:
- Outlook सेटअप: CreateObject("Outlook.Application") लेट बाइंडिंग का उपयोग करके एक Outlook इंस्टेंस बनाता है, जो Office संस्करणों में अधिक लचीला है।
- पंक्तियों के माध्यम से लूप करना: मैक्रो डायनामिक रूप से अंतिम पंक्ति ढूंढता है और हेडर को छोड़कर पंक्ति 2 से पुनरावृति करता है।
- टेम्पलेट व्यक्तिगतकरण: Replace फ़ंक्शन {Name} जैसे प्लेसहोल्डर को पंक्ति-विशिष्ट डेटा से बदल देता है। यह VBA-संचालित टेम्पलेट सिस्टम का मूल है। अतिरिक्त फ़ील्ड के लिए अधिक Replace लाइनें जोड़ें।
- ईमेल निर्माण: बोल्ड टेक्स्ट और लिंक जैसे रिच फॉर्मेटिंग के लिए .HTMLBody का उपयोग करें। यदि आपका टेम्पलेट सादा टेक्स्ट है, तो इसके बजाय .Body का उपयोग करें।
- भेजना: .Send संदेश को स्वचालित रूप से भेजता है, जबकि .Display इसे समीक्षा के लिए खोलता है, जो परीक्षण के दौरान उपयोगी है।
- त्रुटि प्रबंधन: उदाहरणों में बुनियादी त्रुटि प्रबंधन शामिल है और लापता ईमेल पतों वाली पंक्तियों को छोड़ देता है। उत्पादन में, आप लॉगिंग और अधिक विस्तृत सत्यापन जोड़ना चाह सकते हैं।
चरण 6: मैक्रो का परीक्षण और चलाना
- अपनी वर्कबुक को .xlsm फ़ाइल के रूप में सहेजें।
- नमूना डेटा भरें। अवांछित संदेश भेजने से बचने के लिए परीक्षण के लिए अपने स्वयं के ईमेल पते का उपयोग करें।
- मैक्रो को एक बटन पर असाइन करें या Developer टैब >> Macros चुनें।
- SendPersonalizedEmails या SendPersonalizedEmails_Template चुनें >> Run पर क्लिक करें।

- Outlook अनुमति के लिए संकेत दे सकता है। यदि ऐसा होता है, तो अपने टेस्ट सेटअप की पुष्टि करने के बाद ही एक्सेस की अनुमति दें।
- प्रदर्शित संदेशों या Outlook में आपके Sent Items फ़ोल्डर की जाँच करें, इस पर निर्भर करता है कि आपने .Display या .Send का उपयोग किया है।

परीक्षण युक्ति: .Send के बजाय .Display से शुरू करें ताकि आप उन्हें भेजे बिना ईमेल का पूर्वावलोकन कर सकें।
उन्नत टेम्पलेट अनुकूलित करना
- एकाधिक प्लेसहोल्डर: यदि आपके पास अधिक कॉलम हैं, जैसे देय तिथि, तो dueDate = ws.Cells(i, 6).Value जैसे वेरिएबल जोड़ें और body = Replace(body, "{DueDate}", dueDate) का उपयोग करें।
- सशर्त सामग्री: डायनामिक सेक्शन के लिए If स्टेटमेंट का उपयोग करें:
If customField = "VIP" Then body = body & "<p>Exclusive offer for you!</p>" End If
- फ़ाइल से टेम्पलेट: टेम्पलेट को सेल में स्टोर करने के बजाय, इसे टेक्स्ट या HTML फ़ाइल से पढ़ें:
Dim filePath As String filePath = "C:\Template.html" Open filePath For Input As #1 emailTemplate = Input$(LOF(1), 1) Close #1
- HTML संवर्द्धन: आप टेम्पलेट में इमेज या लिंक एम्बेड कर सकते हैं, जैसे <img src="https://example.com/logo.png"> या <a href="{Link}">Click here</a>, और फिर {Link} को डायनामिक रूप से बदल सकते हैं।
सामान्य समस्याओं का निवारण
- Outlook नहीं मिला: सुनिश्चित करें कि आपके सिस्टम पर Outlook इंस्टॉल है।
- सुरक्षा संकेत: Outlook प्रोग्रामेटिक एक्सेस को प्रतिबंधित कर सकता है। यह Outlook और संगठनात्मक सुरक्षा सेटिंग्स द्वारा नियंत्रित होता है, न कि केवल Excel मैक्रो सेटिंग्स द्वारा।
- भेजने पर त्रुटियाँ: त्रुटि प्रबंधन जोड़ें जैसे:
On Error GoTo ErrorHandler ' ... code ... ErrorHandler: MsgBox "Error: " & Err.Description
- प्रदर्शन: बड़ी ईमेल सूचियों के लिए, आप संदेशों के बीच एक छोटी देरी जोड़ सकते हैं:
Application.Wait Now + TimeValue("00:00:01") - HTML रेंडरिंग समस्याएँ: टेम्पलेट को ध्यान से परीक्षण करें और सुनिश्चित करें कि प्लेसहोल्डर HTML संरचना में हस्तक्षेप नहीं करते हैं।
यह सेटअप बल्क व्यक्तिगत मैसेजिंग के लिए अच्छी तरह से स्केल होता है। आप इसे अटैचमेंट जोड़कर, भेजे गए ईमेल को वापस Excel में लॉग करके, या विभिन्न परिदृश्यों के लिए कई टेम्पलेट स्टोर करके एक पूर्ण व्यक्तिगत ईमेल सिस्टम बनाने के लिए और विस्तारित कर सकते हैं।
निष्कर्ष
इन चरणों का पालन करके, आप एक Excel ईमेल जनरेटर बना सकते हैं जो VBA का उपयोग करके स्प्रेडशीट पंक्तियों से व्यक्तिगत Outlook संदेश बनाता है। यह एक व्यावहारिक उदाहरण है कि कैसे VBA एक वर्कशीट को एक हल्के ईमेल स्वचालन टूल में बदल सकता है। दोहराव वाले Outlook संदेशों को हाथ से लिखने के बजाय, आप पुन: प्रयोज्य टेम्पलेट बना सकते हैं और प्रत्येक पंक्ति से व्यक्तिगत विवरण भरने के लिए Excel को कार्य करने दे सकते हैं। यह प्रक्रिया को तेज़, अधिक सुसंगत और स्केल करने में आसान बनाता है। एक बार जब आप बेसिक संस्करण बना लेते हैं, तो आप इसे HTML फॉर्मेटिंग, एकाधिक टेम्पलेट, सशर्त तर्क, अटैचमेंट हैंडलिंग, और स्थिति ट्रैकिंग के साथ विस्तारित कर सकते हैं ताकि एक पूर्ण व्यक्तिगत ईमेल सिस्टम बनाया जा सके।
निःशुल्क उन्नत Excel अभ्यास समाधान के साथ प्राप्त करें!