কম্পিউটার টিউটোরিয়াল

শর্ত পূরণ হলে এক্সেল থেকে স্বয়ংক্রিয়ভাবে ইমেইল পাঠান

স্বয়ংক্রিয়ভাবে ইমেইল পাঠানো আমাদের একই মেসেজ সবার জন্য ডিজাইন করে সেগুলো ব্যবহারকারীদের কাছে পৌঁছে দিতে দেয়। স্বয়ংক্রিয় ইমেইল জেনারেট ও পাঠালে আমরা সময় বাঁচাতে পারি। যেহেতু এটি নির্দিষ্ট সময়ে ইমেইল পাঠাতে সক্ষম করে, ইমেইল অটোমেশন latent গ্রাহকদের সাথে জড়িত থাকার একটি চমৎকার উপায়। ইমেইল অটোমেশনের সবচেয়ে মূল্যবান বৈশিষ্ট্য হলো সঠিক সময়ে সঠিক মানুষের কাছে ইমেইল নোটিফিকেশন পৌঁছে দেয়া। এই আর্টিকেলে আমরা এক্সেলের বিভিন্ন VBA ম্যাক্রো দেখাব যা শর্ত পূরণ হলে স্বয়ংক্রিয়ভাবে ইমেইল পাঠাবে।

ওয়ার্কবুক ডাউনলোড করে সেটি অনুশীলন করুন।

এক্সেলে শর্ত পূরণ হলে স্বয়ংক্রিয় ইমেইল পাঠানোর ৩টি পদ্ধতি

যখন কোনো শর্ত পূরণ হয়, তখন আমরা প্রায়শই আমাদের কাস্টমারদের ইমেইল পাঠাতে চাই। VBA ম্যাক্রো ব্যবহার করে আমরা আমাদের মেইলিং ফাংশনালিটি কাস্টোমাইজ করতে পারি। ফলে, VBA পদ্ধতি ব্যবহার করে আমরা একই সাথে অনেক মানুষকে ইমেইল পাঠাতে পারি। ম্যাক্রো দিয়ে স্বয়ংক্রিয় ইমেইল পাঠাতে হলে আমাদের কম্পিউটারে Outlook প্রি-ইনস্টল্ড থাকতে হবে। তাই আমরা যে কোডটি ব্যবহার করব সেটি Outlook ব্যবহার করে প্রাপকদের ইমেইল পাঠাবে।

১. সেল ভ্যালু ভিত্তিক এক্সেল VBA ম্যাক্রো দিয়ে স্বয়ংক্রিয় ইমেইল পাঠানো

আমরা আমাদের ডেটাসেটের একটি নির্দিষ্ট কলাম ভ্যালু ভিত্তিক করে স্বয়ংক্রিয় ইমেইল পাঠাতে এক্সেল VBA ম্যাক্রো ব্যবহার করব। নিচের ডেটাসেটটি এই উদাহরণের জন্য ব্যবহার করা হবে। যদি D5 সেলের মান ১০-এর চেয়ে বড় হয়, তবে আমরা একটি ফাংশন তৈরি করব যা স্বয়ংক্রিয়ভাবে ইমেইল পাঠাবে।

মান লইয়া যাক, একটি সুপার শপের কিছু কাস্টমার ডিটেইলস ডেটাসেট আছে। ডেটাসেটে কলাম B-এ কিছু কাস্টমারের নাম, কলাম C-এ তাদের ইমেইল ঠিকানা, এবং কলাম D-এ পণ্য কেনার জন্য কিছু বকেয়া রয়েছে। এখন, আমরা তাদের বকেয়া টাকা দিতে অনুরোধ করে ইমেইল পাঠাতে চাই, কিন্তু এখানে একটি শর্ত আছে: কাস্টমারের বিল যদি ১০-এর চেয়ে বড় হয় তবেই আমরা তাদের ইমেইল পাঠাব। তো চলুন দেখি শর্ত পূরণ হলে সেল ভ্যালু ভিত্তিক স্বয়ংক্রিয় ইমেইল পাঠানোর প্রক্রিয়া।

শর্ত পূরণ হলে এক্সেল থেকে স্বয়ংক্রিয়ভাবে ইমেইল পাঠান

ধাপগুলো:

  • প্রথমে রিবন থেকে Developer ট্যাবে যান।
  • দ্বিতীয়ভাবে, Code ক্যাটাগরি থেকে Visual Basic-এ ক্লিক করুন Visual Basic Editor খোলার জন্য। অথবা Alt + F11 চাপুন Visual Basic Editor খোলার জন্য।

শর্ত পূরণ হলে এক্সেল থেকে স্বয়ংক্রিয়ভাবে ইমেইল পাঠান

  • এছাড়া আপনি শুধু আপনার ওয়ার্কশীটে রাইট-ক্লিক করে View Code-এ যেতে পারেন। এটি আপনাকেও Visual Basic Editor-এ নিয়ে যাবে।

শর্ত পূরণ হলে এক্সেল থেকে স্বয়ংক্রিয়ভাবে ইমেইল পাঠান

  • এটি Visual Basic Editor-এ আসবে যেখানে আমরা রেঞ্জ থেকে টেবিল তৈরি করার কোড লিখব।
  • এবং নিচের VBA কোডটি কপি-পেস্ট করুন।

VBA কোড:

Dim r As Range Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Target.Cells.Count > 1 Then Exit Sub Set r = Intersect(Range("D5"), Target) If r Is Nothing Then Exit Sub If IsNumeric(Target.Value) And Target.Value > 10 Then Call Send_Mail_Automatically1 End If End Sub Sub Send_Mail_Automatically1() Dim ob1 As Object Dim ob2 As Object Dim str As String Set ob1 = CreateObject("Outlook.Application") Set ob2 = ob1.CreateItem(0) str = "Hello!" & vbNewLine & vbNewLine & "To prevent further costs," _ & vbNewLine & "please pay before the deadline." On Error Resume Next With ob2 .To = Range("C5").Value .cc = "" .BCC = "" .Subject = "Request to Pay Bill" .Body = str .Send End With On Error GoTo 0 Set ob2 = Nothing Set ob1 = Nothing End Sub
  • এরপর RubSub বাটনে ক্লিক করে বা কীবোর্ড শর্টকাট F5 চাপুন কোড রান করতে।

শর্ত পূরণ হলে এক্সেল থেকে স্বয়ংক্রিয়ভাবে ইমেইল পাঠান

  • তখন একটি Macros ডায়লগ আসবে। সঠিক Macros বেছে নিয়ে Run বাটনে চাপুন।

শর্ত পূরণ হলে এক্সেল থেকে স্বয়ংক্রিয়ভাবে ইমেইল পাঠান

  • এখন আপনার Outlook অ্যাপ্লিকেশনে গিয়ে ইনবক্স চেক করলে আমরা সেটি পাব যা আপনি এক্সেল থেকে VBA ম্যাক্রো দিয়ে পাঠিয়েছেন।

শর্ত পূরণ হলে এক্সেল থেকে স্বয়ংক্রিয়ভাবে ইমেইল পাঠান

VBA কোড ব্যাখ্যা

Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Target.Cells.Count > 1 Then Exit Su Set r = Intersect(Range("D5"), Target) If r Is Nothing Then Exit Sub If IsNumeric(Target.Value) And Target.Value > 10 Then Call Send_Mail_Automatically1 End If End Sub

আমরা এখানে একটি Private Sub ব্যবহার করব। কারণ আমরা এই কোড রান করার জন্য Macro উইন্ডো ব্যবহার করব না। যখন একটি সেলের মান পরিবর্তন হবে, তখন এই কোড স্বয়ংক্রিয়ভাবে এক্সিকিউট হবে। আমরা Worksheet Change ইভেন্টের সাথে Private Sub ব্যবহার করব। তারপর সেলের সংখ্যা একটিতে সীমাবদ্ধ করব, যা হলো D5। এরপর দেখব এটি ১০-এর চেয়ে বড় কিনা। অবশেষে, যদি শর্ত পূরণ হয়, তবে Send_Email_Automatically1 Sub Procedure রান হবে।

Sub Send_Mail_Automatically1() Dim ob1 As Object Dim ob2 As Object Dim str As String Set ob1 = CreateObject("Outlook.Application") Set ob2 = ob1.CreateItem(0) str = "Hello!" & vbNewLine & vbNewLine & "To prevent further costs," & vbNewLine & "please pay before the deadline." On Error Resume Next With ob2 .To = Range("C5").Value .cc = "" .BCC = "" .Subject = "Request to Pay Bill" .Body = str .Send

এখানে আমরা Send_Email_Automatically1 Sub Procedure ব্যবহার করি। তারপর ভেরিয়েবল টাইপ ডিক্লেয়ার করি। আমরা ইমেইল ক্লায়েন্ট হিসেবে Outlook ব্যবহার করি। তারপর আমাদের কোডে ইমেইল কন্টেন্ট লিখি; str ইমেইল বডি দেখাচ্ছে, এবং আমরা ইমেইল পাঠাতে চাই সেল ভ্যালু C5-এ, যেখানে আমাদের কাস্টমারদের ইমেইল সংরক্ষিত, সাবজেক্ট দিয়েছি ‘.Subject’-এ। এরপর ‘.Send’ ব্যবহার করে আমাদের ইমেইল পাঠিয়েছি।

আরও পড়ুন: সেল কন্টেন্ট ভিত্তিক করে এক্সেল থেকে স্বয়ংক্রিয় ইমেইল (২টি পদ্ধতি)

২. ডিউ ডেট ভিত্তিক VBA কোড দিয়ে স্বয়ংক্রিয় ইমেইল পাঠানো

এই পদ্ধতিতে, আমরা এক্সেল VBA ম্যাক্রো ব্যবহার করে বিলের ডিউ ডেট নিকট এসitôt স্বয়ংক্রিয়ভাবে একটি ইমেইল পাঠাব। এটি এক ধরনের রিমাইন্ডার। এটি প্রদর্শনের জন্য আমরা নিচের ডেটাসেট ব্যবহার করব। এবং ডেটাসেটে কলাম B-এ কিছু কাস্টমার নাম, কলাম C-এ তাদের ইমেইল ঠিকানা, কলাম D-এ পাঠাতে চাওয়া মেসেজ, এবং কলাম E-এ ডিউ পেমেন্টের ডেডলাইন রয়েছে। তো চলুন শর্ত পূরণ হলে তারিখ ভিত্তিক স্বয়ংক্রিয় ইমেইল পাঠানোর ধাপগুলো দেখি।

শর্ত পূরণ হলে এক্সেল থেকে স্বয়ংক্রিয়ভাবে ইমেইল পাঠান

ধাপগুলো:

  • প্রথমে রিবন থেকে Developer ট্যাবে যান।
  • দ্বিতীয়, Visual Basic-এ ক্লিক করুন Visual Basic Editor খোলার জন্য।
  • Visual Basic Editor খোলার আরেকটি উপায় হলো সরাসরি Alt + F11 চাপুন।
  • অথবা, শীটে রাইট-ক্লিক করুন, তারপর View Code সিলেক্ট করুন।
  • এবং এটি ভিজুয়াল বেসিক উইন্ডো খুলবে।
  • এরপর নিচের VBA কোড কপি-পেস্ট করুন।

VBA কোড:

Public Sub Send_Email_Automatically2() Dim rngD, rngS, rngT As Range Dim ob1, ob2 As Object Dim LRow, x As Long Dim l, strbody, rSendValue, mSub As String On Error Resume Next Set rngD = Application.InputBox("Deadline Range:", "Exceldemy", , , , , , 8) If rngD Is Nothing Then Exit Sub Set rngS = Application.InputBox("Email Range:", "Exceldemy", , , , , , 8) If rngS Is Nothing Then Exit Sub Set rngT = Application.InputBox("Email Topic Range:", "Exceldemy", , , , , , 8) If rngT Is Nothing Then Exit Sub LRow = rngD.Rows.Count Set rngD = rngD(1) Set rngS = rngS(1) Set rngT = rngT(1) Set ob1 = CreateObject("Outlook.Application") For x = 1 To LRow rngDValue = "" rngDValue = rngD.Offset(x - 1).Value If rngDValue <> "" Then If CDate(rngDValue) - Date <= 7 And CDate(rngDValue) - Date > 0 Then rngSValue = rngS.Offset(x - 1).Value mSub = rngT.Offset(x - 1).Value & " on " & rngDValue l = "

" strbody = "" strbody = strbody & "Hello! " & rngSValue & l strbody = strbody & rngT.Offset(x - 1).Value & l strbody = strbody & "" Set ob2 = ob1.CreateItem(0) With ob2 .Subject = mSub .To = rSendValue .HTMLBody = strbody .Send End With Set ob2 = Nothing End If End If Next Set ob1 = Nothing End Sub
  • আরও, F5 কী চাপুন বা Run Sub বাটনে ক্লিক করুন কোড রান করতে।

শর্ত পূরণ হলে এক্সেল থেকে স্বয়ংক্রিয়ভাবে ইমেইল পাঠান

  • এখন ডেডলাইন কলামের রেঞ্জ সিলেক্ট করে OK চাপুন।

শর্ত পূরণ হলে এক্সেল থেকে স্বয়ংক্রিয়ভাবে ইমেইল পাঠান

  • একইভাবে ইমেইল কলামের রেঞ্জ সিলেক্ট করে OK চাপুন।

শর্ত পূরণ হলে এক্সেল থেকে স্বয়ংক্রিয়ভাবে ইমেইল পাঠান

  • তারপর মেসেজ কলামের রেঞ্জ বেছে নিয়ে OK চাপুন।

শর্ত পূরণ হলে এক্সেল থেকে স্বয়ংক্রিয়ভাবে ইমেইল পাঠান

  • এবং, কাজ শেষ। মেসেজগুলোই ইমেইল ঠিকানাতে পাঠানো হয়েছে। আপনার Outlook ইনবক্স চেক করে নিশ্চিত हो ان।

VBA কোড ব্যাখ্যা

Public Sub Send_Email_Automatically2() Dim rngD, rngS, rngT As Range Dim ob1, ob2 As Object Dim LRow, x As Long Dim l, strbody, rSendValue, mSub As String On Error Resume Next Set rngD = Application.InputBox("Deadline Range:", "Exceldemy", , , , , , 8) If rngD Is Nothing Then Exit Sub Set rngS = Application.InputBox("Email Range:", "Exceldemy", , , , , , 8) If rngS Is Nothing Then Exit Sub Set rngT = Application.InputBox("Email Topic Range:", "Exceldemy", , , , , , 8) If rngT Is Nothing Then Exit Sub LRow = rngD.Rows.Count Set rngD = rngD(1) Set rngS = rngS(1) Set rngT = rngT(1) Set ob1 = CreateObject("Outlook.Application")

এখানে আমরা আবার একটি Private Sub ব্যবহার করি, Send_Email_Automatically2 আমাদের Sub Procedure-র নাম। আমরা ভেরিয়েবল ধরন ডিক্লেয়ার করি। তারপর InputBox ব্যবহার করে ভ্যালু রেঞ্জ প্রদান করি। এরপর আমরা মেইল ক্লায়েন্ট হিসেবে Outlook বেছে নিই।

 For x = 1 To LRow rngDValue = "" rngDValue = rngD.Offset(x - 1).Value If rngDValue <> "" Then If CDate(rngDValue) - Date <= 7 And CDate(rngDValue) - Date > 0 Then rngSValue = rngS.Offset(x - 1).Value mSub = rngT.Offset(x - 1).Value & " on " & rngDValue l = "

" strbody = "" strbody = strbody & "Hello! " & rngSValue & l strbody = strbody & rngT.Offset(x - 1).Value & l strbody = strbody & "" Set ob2 = ob1.CreateItem(0) With ob2 .Subject = mSub .To = rSendValue .HTMLBody = strbody .Send

তারপর আমরা VBA CDate ফাংশন ব্যবহার করে দেখি কোনো তারিখ বর্তমান তারিখ থেকে সাত দিনের মধ্যে আছে কিনা। তারপর আমাদের কোডে ইমেইল কন্টেন্ট সেট করি। অবশেষে, আমাদের ইমেইল পাঠাতে ‘.Send’ ব্যবহার করি।

আরও পড়ুন: তারিখ ভিত্তিক এক্সেল থেকে স্বয়ংক্রিয় ইমেইল পাঠানো

সদৃশ পাঠ্য:

  • শেয়ার্ড এক্সেল ফাইলে কারা আছে দেখা (দ্রুত ধাপ সহ)
  • এক্সেলে শেয়ার ওয়ার্কবুক ইNABLE করা
  • এক্সেল ওয়ার্কশীট থেকে VBA ব্যবহার করে রিমাইন্ডার ইমেইল স্বয়ংক্রিয় পাঠানো
  • আউটলুক থেকে এক্সেল ব্যবহার করে বাল্ক ইমেইল পাঠানো (৩টি উপায়)
  • এক্সেল থেকে অ্যাট্যাচমেন্টসহ ইমেইল পাঠানোর ম্যাক্রো প্রয়োগ

৩. একাধিক শর্ত পূরণ হলে এক্সেল VBA দিয়ে স্বয়ংক্রিয় ইমেইল পাঠানো

এই পদ্ধতিতে, আবার আমরা একটি VBA ম্যাক্রো ব্যবহার করব ইমেইল পাঠাতে, কিন্তু এই বার একাধিক শর্ত পূরণ হলে সেটি কাস্টমারের কাছে পাঠানো হবে। তো চলুন স্বয়ংক্রিয়ভাবে ইমেইল পাঠানোর প্রক্রিয়া দেখি।

শর্ত পূরণ হলে এক্সেল থেকে স্বয়ংক্রিয়ভাবে ইমেইল পাঠান

ধাপগুলো:

  • শুরুতে, রিবনে Developer ট্যাবে ক্লিক করুন।
  • দ্বিতীয়, Visual Basic-এ ক্লিক করে Visual Basic Editor চালু করুন।
  • বিকল্পভাবে, আপনি Alt + F11 চাপুন Visual Basic Editor অ্যাক্সেস করতে।
  • অথবা, শীটে রাইট-ক্লিক করুন এবং মেনু থেকে View Code বেছে নিন।
  • এবং ভিজুয়াল বেসিক উইন্ডো আসবে।
  • সেখানে কোড লিখুন।

VBA কোড:

Sub Send_Email_Automatically3() Dim wrksht As Worksheet Dim add As String, mSub As String, N As String Dim eRow As Long, x As Long Set wrksht = ThisWorkbook.Sheets("Multiple Conditions") With wrksht eRow = .Cells(.Rows.Count, 5).End(xlUp).Row For x = 5 To eRow If .Cells(x, 4) >= 1 And .Cells(x, 5) = "Yes" Then add = .Cells(x, 3) mSub = "Request to Pay Bill" N = .Cells(x, 2) Call Multiple_Conditions(add, mSub, N) End If Next x End With End Sub Sub Multiple_Conditions(mAddress As String, mSubject As String, eName As String) Dim ob1 As Object Dim ob2 As Object Set ob1 = CreateObject("Outlook.Application") Set ob2 = ob1.CreateItem(0) With ob2 .To = add .CC = "" .BCC = "" .Subject = mSub .Body = "Hello!" & N & ", To prevent further costs, please pay before the deadline." .Attachments.add ActiveWorkbook.FullName .Send End With Set pMail = Nothing Set pApp = Nothing End Sub
  • শেষে F5 কী চাপুন কোড রান করতে।

শর্ত পূরণ হলে এক্সেল থেকে স্বয়ংক্রিয়ভাবে ইমেইল পাঠান

  • তারপর একটি Macros ডায়লগ আসবে। তারপর উপযুক্ত Macros বেছে নিয়ে Run বাটনে চাপুন।

শর্ত পূরণ হলে এক্সেল থেকে স্বয়ংক্রিয়ভাবে ইমেইল পাঠান

  • পূর্বের পদ্ধতিগুলোর মতো, আপনি Outlook খুলে ইনবক্স চেক করলে এক্সেল থেকে VBA ম্যাক্রো দিয়ে পাঠানো ইমেইলটি দেখতে পাবেন।

VBA কোড ব্যাখ্যা

Sub Send_Email_Automatically3() Dim wrksht As Worksheet Dim add As String, mSub As String, N As String Dim eRow As Long, x As Long Set wrksht = ThisWorkbook.Sheets("Multiple Conditions") With wrksht eRow = .Cells(.Rows.Count, 5).End(xlUp).Row For x = 5 To eRow If .Cells(x, 4) >= 1 And .Cells(x, 5) = "Yes" Then add = .Cells(x, 3) mSub = "Request to Pay Bill" N = .Cells(x, 2) Call Multiple_Conditions(add, mSub, N)

এখানে আমরা দুটি আলাদা প্রসিজার ব্যবহার করি। Send_Email_Automatically3 আমাদের প্রথম Sub Procedure-র নাম। আমরা ‘Multiple Conditions’ আমাদের শীট হিসেবে সেট করি এবং ভেরিয়েবল ধরন ডিক্লেয়ার করি। তারপর লাস্ট রো নম্বর বের করি। আরও, যেহেতু আমাদের ভ্যালু রো ৫-তে শুরু হয়, তাই আমরা আমাদের কোডে রো ৫ থেকে শেষ পর্যন্ত যাব।

Sub Multiple_Conditions(mAddress As String, mSubject As String, eName As String) Dim ob1 As Object Dim ob2 As Object Set ob1 = CreateObject("Outlook.Application") Set ob2 = ob1.CreateItem(0) With ob2 .To = add .CC = "" .BCC = "" .Subject = mSub .Body = "Hello!" & N & ", To prevent further costs, please pay before the deadline." .Attachments.add ActiveWorkbook.FullName .Send

তারপর আমরা Multiple_Conditions, আমাদের দ্বিতীয় Sub Procedure-কে কল করি। আমরা মেইল ক্লায়েন্ট হিসেবে Outlook বেছে নিই। তারপর আমাদের কোডে ইমেইল কন্টেন্ট সেট করি। Attachment মেথড ব্যবহার করে আমরা এক্সেল ফাইলটিকে ইমেইলে অ্যাট্যাচ করছি। এরপর ‘.Send’ ব্যবহার করে আমাদের ইমেইল পাঠিয়েছি।

আরও পড়ুন: শর্ত পূরণ হলে এক্সেল থেকে ইমেইল পাঠানো (৩টি সহজ পদ্ধতি)

উপসংহার

উপরোক্ত পদ্ধতিগুলো আপনাকে এক্সেলে শর্ত পূরণ হলে স্বয়ংক্রিয় ইমেইল পাঠাতে সাহায্য করবে। আশা করি এটি আপনার কাজে লাগবে! আপনার কোনো প্রশ্ন, পরামর্শ বা ফিডব্যাক থাকলে কমেন্ট সেকশনে জানান। অথবা আপনি ExcelDemy.com ব্লগের অন্যান্য আর্টিকেলগুলো দেখতে পারেন!

সম্পর্কিত আর্টিকেল

  • এক্সেল থেকে আউটলুককে স্বয়ংক্রিয় ইমেইল পাঠানো (৪টি পদ্ধতি)
  • বডি সহ এক্সেল থেকে ম্যাক্রো দিয়ে ইমেইল পাঠানো (সহজ ধাপ সহ)
  • এক্সেল ম্যাক্রো: সেলের ঠিকানায় ইমেইল পাঠানো (২টি সহজ উপায়)
  • এক্সেল স্প্রেডশীট থেকে একাধিক ইমেইল পাঠানো (২টি সহজ পদ্ধতি)
  • বডি সহ এক্সেল থেকে ইমেইল পাঠানোর ম্যাক্রো (৩টি উপকারী কেস)
  • ইমেইল দিয়ে এডিটেবল এক্সেল স্প্রেডশীট পাঠানো (৩টি কুইক মেথড)

  1. এক্সেল লিস্ট থেকে বাল্ক ইমেইল পাঠান: ২টি প্রমাণিত অটোমেশন পদ্ধতি

  2. ইমেইলের মাধ্যমে সম্পাদনাযোগ্য এক্সেল স্প্রেডশিট পাঠান: ৩টি দ্রুত ও সহজ পদ্ধতি

  3. এক্সেলে অটো-জেনারেটেড ইমেইল লিংক সহজে সরান – ৭টি প্রমাণিত পদ্ধতি

  4. বেনামী ইমেইল পাঠান: গোপনীয়তা রক্ষার ধাপে ধাপে গাইড