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

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

প্রাযত্ন আমাদেরকে গ্রাহকদের ইমেইল পাঠাতে হয় যখন একটি শর্ত পূরণ হয়। এই আর্টিকেলে আপনাকে ৩টি পদ্ধতি দেখানো হবে এক্সেল-এ শর্ত পূরণ হলে ইমেইল পাঠানো-র। আমাদের পদ্ধতিগুলো প্রদর্শনের জন্য, আমরা ৩টি কলাম সম্বলিত একটি ডাটাসেট বেছে নিয়েছি: "Name", "Email", এবং "Payment Due"।

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

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

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

ধাপসমূহ:

  • প্রথমে "Cell Value Change" শীটে Right-Click করুন।
  • দ্বিতীয়, View Code সিলেক্ট করুন।
  • তৃতীয়, নিচের কোডটি লিখুন।
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Application.Intersect(Range("D5"), Target) Is Nothing Then
If IsNumeric(Target.Value) And Target.Value > 700 Then
Call Send_Email_Condition_Cell_Value_Change
End If
End If
End Sub

VBA কোড ব্রেকডাউন

এখানে আমরা Private Sub ব্যবহার করছি। কারণ আমরা এই কোড Macro উইন্ডো দিয়ে এক্সিকিউট করব না। সেল ভ্যালু পরিবর্তন হলে এই কোড স্বয়ংক্রিয়ভাবে চলেगा।

  • প্রথমে, আমরা Worksheet_Change ইভেন্টে Private Sub ব্যবহার করছি।
  • দ্বিতীয়, আমরা সেল সংখ্যা ১-এ সীমাবদ্ধ করছি এবং সেটি হলো D5।
  • তৃতীয়, আমরা চেক করছি এটি ৭০০-এর চেয়ে বড় কিনা।
  • শেষে, যদি শর্ত পূরণ হয়, তবে Sub Procedure Send_Email_Condition_Cell_Value_Change এক্সিকিউট হবে।
  • শেষে, Save করে এই উইন্ডো বন্ধ করুন।

এখন, আমরা Module উইন্ডোতে কোড লিখব। VBA Module আনার জন্য –

  • প্রথমে, Developer ট্যাব >>> Visual Basic সিলেক্ট করুন।

বিকল্পভাবে, ALT + F11 চাপুন VBA উইন্ডো দেখতে।

  • দ্বিতীয়, Insert >>> Module সিলেক্ট করুন।

এই উইন্ডোতে আমরা আমাদের কোড লিখব।

  • নিচের কোডটি লিখুন।
Sub Send_Email_Condition_Cell_Value_Change()
Dim pApp As Object
Dim pMail As Object
Dim pBody As String
Set pApp = CreateObject("Outlook.Application")
Set pMail = pApp.CreateItem(0)
pBody = "Hello, " & Range("B5").Value & vbNewLine & _
"You've Payment Due." & vbNewLine & _
"Please Pay it to avoid extra fees."
On Error Resume Next
With pMail
.To = Range("C5").Value
.CC = ""
.BCC = ""
.Subject = "Request For Payment"
.Body = pBody
.Display 'We can use .Send to Send the Email
End With
On Error GoTo 0
Set pMail = Nothing
Set pApp = Nothing
End Sub

VBA কোড ব্রেকডাউন

  • প্রথমে, আমরা আমাদের Sub Procedure Send_Email_Condition_Cell_Value_Change কল করছি।
  • দ্বিতীয়, আমরা Variable টাইপ ডিক্লেয়ার করছি।
  • তৃতীয়, আমরা Outlook-কে আমাদের Mail Application হিসেবে সিলেক্ট করছি।
  • তারপর, আমাদের কোডে ইমেইল কন্টেন্ট সেট করা হয়েছে।
  • এরপর, ".Display" এখানে ব্যবহৃত হয়েছে আমাদের ইমেইল প্রদর্শন করার জন্য। তাই আমাদের ম্যানুয়ালি Send চাপতে হবে ইমেইল পাঠাতে। আরো, আমরা ".Send" ব্যবহার করতে পারি ইমেইল প্রদর্শন না করে পাঠাতে।
  • এরপর, Save করে Module বন্ধ করুন।

এখন, আমাদের ডাটাসেটে, আমরা 699 টাইপ করলে কিছুই হবে না।

তবে, যদি আমরা 801 টাইপ করি (৭০০-এর চেয়ে বড়), তবে আমাদের কোড এক্সিকিউট হবে।

Outlook email পাঠানোর অপশন দেখাবে। আমরা Send চাপলে ইমেইল ঠিকানায় পাঠিয়ে দেবে।

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

দ্বিতীয় পদ্ধতিতে, আমরা আমাদের ডাটাসেট পরিবর্তন করেছি। এই পদ্ধতিতে আমরা একাধিক শর্ত পূরণ হলে ইমেইল পাঠাব। আরও, আমরা একক Module-এ ২টি Sub Procedure ব্যবহার করব। যদি আমাদের কোড ইচ্ছামতো কাজ করে, তবে আমরা ২জনকে ইমেইল পাঠাব। আরও, আমরা ফাইলটিকে আমাদের ইমেইল-এর সাথে আট্যাচ করব।

ধাপসমূহ:

  • প্রথমে, প্রথম পদ্ধতিতে দেখানো মতো, Module উইন্ডো আনুন এবং নিচের কোড লিখুন।
Option Explicit
Sub Send_Email_Condition()
Dim xSheet As Worksheet
Dim mAddress As String, mSubject As String, eName As String
Dim eRow As Long, x As Long
Set xSheet = ThisWorkbook.Sheets("Conditions")
With xSheet
eRow = .Cells(.Rows.Count, 5).End(xlUp).Row
For x = 5 To eRow
If .Cells(x, 4) >= 1 And .Cells(x, 5) = "Yes" Then
mAddress = .Cells(x, 3)
mSubject = "Request For Payment"
eName = .Cells(x, 2)
Call Send_Email_With_Multiple_Condition(mAddress, mSubject, eName)
End If
Next x
End With
End Sub
Sub Send_Email_With_Multiple_Condition(mAddress As String, mSubject As String, eName As String)
Dim pApp As Object
Dim pMail As Object
Set pApp = CreateObject("Outlook.Application")
Set pMail = pApp.CreateItem(0)
With pMail
.To = mAddress
.CC = ""
.BCC = ""
.Subject = mSubject
.Body = "Mr./Mrs. " & eName & ", Please pay it within the next week."
.Attachments.Add ActiveWorkbook.FullName 'Send The File via Email
.Display 'We can use .Send here too
End With
Set pMail = Nothing
Set pApp = Nothing
End Sub

VBA কোড ব্রেকডাউন

  • প্রথমে, আমরা আমাদের প্রথম Sub Procedure Send_Email_Condition কল করছি।
  • দ্বিতীয়, আমরা Variable টাইপ ডিক্লেয়ার করছি এবং "Conditions" কে আমাদের Sheet হিসেবে সেট করছি।
  • তৃতীয়, শেষ row নম্বর খুঁজে বের করা হয়েছে। আরও, আমাদের ভ্যালু row 5- থেকে শুরু, তাই আমরা কোডে row 5 থেকে শেষ row রাখেছি।
  • তারপর, আমাদের দ্বিতীয় Sub Procedure Send_Email_With_Multiple_Condition কল করছি।
  • এরপর, আমরা Outlook-কে আমাদের Mail Application হিসেবে সিলেক্ট করছি।
  • তারপর, আমাদের কোডে ইমেইল কন্টেন্ট সেট করা হয়েছে।
  • এখানে, আমরা Excel ফাইলটি ইমেইল-এর সাথে আট্যাচ করছি Attachment মেথড ব্যবহার করে।
  • এরপর, ".Display" ব্যবহার করা হয়েছে আমাদের ইমেইল প্রদর্শন করার জন্য। তাই আমাদের ম্যানুয়ালি Send চাপতে হবে ইমেইল পাঠাতে। আরো, আমরা ".Send" ব্যবহার করতে পারি ইমেইল প্রদর্শন না করে পাঠাতে।
  • দ্বিতীয়, Save করে Module বন্ধ করুন।

এখন, আমরা Macro উইন্ডো আনব কোড এক্সিকিউট করতে।

  • প্রথমে, Developer ট্যাব >>> Macros সিলেক্ট করুন।

Macro উইন্ডো পপ-আপ হবে।

  • দ্বিতীয়, "Send_Email_Condition" সিলেক্ট করুন।
  • শেষে, Run চাপুন।

এটি আমাদের কোড এক্সিকিউট করবে। দুজন শর্ত পূরণ করেছেন, তাই আমরা এখানে দুটি ইমেইল উইন্ডো দেখব।

৩. তারিখ শর্তের ওপর ভিত্তি করে এক্সেলে ইমেইল পাঠানো

শেষ পদ্ধতিতে, আমরা ইমেইল পাঠাব যদি ডেডলাইন বর্তমান তারিখ থেকে এক সপ্তাহের মধ্যে পড়ে। আজ ১৯ মে ২০২২ এই আর্টিকেল লেখার সময়। তাই শুধু এক সারি সপ্তাহের মধ্যে পড়েছে। সেটি হলো row 5। আমরা VBA কোড ব্যবহার করে সেই ব্যক্তিকে ইমেইল পাঠাব।

ধাপসমূহ:

  • প্রথমে, প্রথম পদ্ধতিতে দেখানো মতো, Module উইন্ডো আনুন এবং নিচের কোড লিখুন।
Public Sub Send_Email_Date_Condition()
Dim rDate, rSend, rText As Range
Dim pApp, pItem As Object
Dim LRow, x As Long
Dim lineBreak, pBody, rSendValue, mSubject As String
On Error Resume Next
Set rDate = Application.InputBox("Select Deadline Range:", "Exceldemy", , , , , , 8)
If rDate Is Nothing Then Exit Sub
Set rSend = Application.InputBox("Select Email Range:", "Exceldemy", , , , , , 8)
If rSend Is Nothing Then Exit Sub
Set rText = Application.InputBox("Select Email Topic Range:", "Exceldemy", , , , , , 8)
If rText Is Nothing Then Exit Sub
LRow = rDate.Rows.Count
Set rDate = rDate(1)
Set rSend = rSend(1)
Set rText = rText(1)
Set pApp = CreateObject("Outlook.Application")
For x = 1 To LRow
rDateValue = ""
rDateValue = rDate.Offset(x - 1).Value
If rDateValue <> "" Then
If CDate(rDateValue) - Date <= 7 And CDate(rDateValue) - Date > 0 Then
rSendValue = rSend.Offset(x - 1).Value
mSubject = rText.Offset(x - 1).Value & " on " & rDateValue
lineBreak = "

" pBody = "" pBody = pBody & "Dear " & rSendValue & lineBreak pBody = pBody & rText.Offset(x - 1).Value & lineBreak pBody = pBody & "" Set pItem = pApp.CreateItem(0) With pItem .Subject = mSubject .To = rSendValue .HTMLBody = pBody .Display 'We can also use .Send here End With Set pItem = Nothing End If End If Next Set pApp = Nothing End Sub

VBA কোড ব্রেকডাউন

  • প্রথমে, আমরা আমাদের প্রথম Sub Procedure Send_Email_Date_Condition কল করছি।
  • দ্বিতীয়, আমরা Variable টাইপ ডিক্লেয়ার করছি এবং "Conditions" কে আমাদের Sheet হিসেবে সেট করছি।
  • তৃতীয়, আমরা InputBox ব্যবহার করছি আমাদের ভ্যালুর রেঞ্জ সেট করতে।
  • এরপর, আমরা Outlook-কে আমাদের Mail Application হিসেবে সিলেক্ট করছি।
  • তারপর, আমরা VBA CDate ফাংশন ব্যবহার করছি চেক করতে একটি তারিখ বর্তমান তারিখ থেকে সাত দিনের মধ্যে আছে কিনা।
  • তারপর, আমাদের কোডে ইমেইল কন্টেন্ট সেট করা হয়েছে।
  • এরপর, ".Display" ব্যবহার করা হয়েছে আমাদের ইমেইল দেখানোর জন্য। তাই আমাদের ম্যানুয়ালি Send চাপতে হবে ইমেইল পাঠাতে। আরো, আমরা ".Send" ব্যবহার করতে পারি ইমেইল প্রদর্শন না করে পাঠাতে।
  • দ্বিতীয়, Save করে Module বন্ধ করুন।
  • তৃতীয়, পদ্ধতি ২-তে দেখানো মতো, Macro উইন্ডো আনুন।
  • তারপর, "Send_Email_Date_Condition" সিলেক্ট করুন এবং Run চাপুন।
  • প্রথমে, তারিখ কলাম সিলেক্ট করুন এবং OK চাপুন।
  • দ্বিতীয়, ইমেইল কলাম সিলেক্ট করুন এবং OK চাপুন।
  • তৃতীয়, ইমেইল কন্টেন্ট কলাম সিলেক্ট করুন এবং OK চাপুন।
  • তারপর আমরা ইমেইল ডায়লগ বক্স দেখব। আমরা Send চাপলে আমাদের লক্ষ্য অর্জন করব।

স্মরণ রাখার বিষয়গুলো

  • আমাদের সব পদ্ধতিতে, Outlook ছিল আমাদের ডিফল্ট ইমেইল অ্যাপ্লিকেশন। আলাদা Applications-এর জন্য আলাদা কোড লাগতে পারে।

প্র্যাকটিস সেকশন

আমরা প্রতিটি পদ্ধতির জন্য প্র্যাকটিস ডাটাসেট Excel ফাইলে যোগ করেছি।

উপসংহার

আমরা আপনাকে ৩টি পদ্ধতি দেখিয়েছি এক্সেল-এ শর্ত পূরণ হলে ইমেইল পাঠাতে। পড়ার জন্য ধন্যবাদ, এক্সেলে দক্ষ থাকুন!

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

  • ম্যাক্রো ব্যবহার করে বডি সহ এক্সেল থেকে ইমেইল পাঠানো (সহজ ধাপাবলি)
  • এক্সেল থেকে আউটলকে স্বয়ংক্রিয় ইমেইল পাঠানো (৪টি পদ্ধতি)
  • সেল কন্টেন্টের ভিত্তিতে এক্সেল থেকে স্বয়ংক্রিয় ইমেইল পাঠানো (২টি পদ্ধতি)
  • এক্সেল ফাইল স্বয়ংক্রিয়ভাবে ইমেইলে পাঠানো (৩টি উপযুক্ত পদ্ধতি)
  • এক্সেল ওয়ার্কশীট থেকে VBA ব্যবহার করে রিমাইন্ডার ইমেইল স্বয়ংক্রিয়ভাবে পাঠান
  • এক্সেল শেয়ার্ড ফাইলে কারা আছে দেখা (কুইক স্টেপস)
  1. এক্সেলে নির্ভুল ফ্লোর প্লান তৈরি করুন – দুটি সহজ, প্রমাণিত কৌশল

  2. এক্সেলে রো হায়ারার্কি মাস্টার করুন: দুটি সহজ কৌশল

  3. এক্সেলে সেল নির্ভরতা ট্রেস করার ২ সহজ উপায়

  4. এক্সেল গাইড: একাধিক রঙে ডেটা ফিল্টার করার দুটি সহজ পদ্ধতি