ব্যবহারকারীরা যখন কাস্টমার বা বসকে ইমেইল পাঠায়, তখন ট্র্যাক রাখা কঠিন হয়। তখন এক্সেল বড় উপকারী হয়। তাই "এক্সেল থেকে আউটলকে স্বয়ংক্রিয় ইমেইল পাঠানো" একটি টাইম-সেভিং পদ্ধতি হিসেবে প্রমাণিত হয়েছে। এক্সেল VBA ম্যাক্রো এবং HYPERLINK ফাংশন এক্সেল এন্ট্রি ব্যবহার করে স্বয়ংক্রিয় ইমেইল পাঠাতে বা ড্রাফট তৈরি করতে পারে।
ধরুন, এক্সেলে Employee Restructured Salary ডাটা আছে এবং আমরা Outlook ব্যবহার করে স্বয়ংক্রিয় ইমেইল পাঠাতে চাই।
এক্সেল ওয়ার্কবুক ডাউনলোড করুন
⧭ মাইক্রোসফট ভিজ্যুয়াল বেসিক খুলা এবং মডিউলে কোড ইনসার্ট করা
যেকোনো পদ্ধতি দেখানোর আগে, এক্সেলে Microsoft Visual Basic-এ Module খুলে কোড ইনসার্ট করার পদ্ধতি জানা দরকার।
🔄 মাইক্রোসফট ভিজ্যুয়াল বেসিক খোলা: এখানে মূলত ৩টি পদ্ধতি আছে।
- কীবোর্ড শর্টকাট: ALT+F11 একসাথে চাপুন।
- Developer Tab ব্যবহার: এক্সেল ওয়ার্কশীতে Developer Tab > Visual Basic সিলেক্ট করুন।
- Worksheet Tab ব্যবহার: যেকোনো ওয়ার্কশীতে যান, রাইট-ক্লিক করুন > View Code ( Context Menu- থেকে) বেছে নিন।
🔄 মাইক্রোসফট ভিজ্যুয়াল বেসিক-এ মডিউল ইনসার্ট করা: এখানে ২টি পদ্ধতি আছে।
- Sheet's Options ব্যবহার: VBA উইন্ডো খোলার পর একটি Worksheet সিলেক্ট করুন > রাইট-ক্লিক > Insert ( Context Menu- থেকে) > Module বেছে নিন।
- Toolbar ব্যবহার: Insert ( Toolbar- থেকে) সিলেক্ট করুন > Module বেছে নিন।
এক্সেল থেকে আউটলকে স্বয়ংক্রিয় ইমেইল পাঠানোর ৪টি সহজ পদ্ধতি
পদ্ধতি ১: VBA ম্যাক্রো ব্যবহার করে আউটলকে মাধ্যমে নির্বাচিত প্রাপকদের স্বয়ংক্রিয় ইমেইল পাঠানো
আমরা একটি ম্যাক্রো এক্সিকিউশন Button তৈরি করব যাতে শুধু এক ক্লিকে নির্বাচিত প্রাপকদের মেইল পাঠানো যায়।
Step 1: Insert ট্যাব > Shapes > যেকোনো আকৃতি সিলেক্ট করুন (যেমন Rectangular: Rounded Corners)।
Step 2: Plus Icon টেনে আপনার পছন্দের জায়গায় আকৃতি টি রাখুন।
Step 3: পছন্দের Shape Fill এবং Outline Color বেছে নিয়ে রাইট-ক্লিক করুন। Edit Text ক্লিক করে টেক্সট লিখুন।
Step 4: উপরের নির্দেশনা মেনে Microsoft Visual Basic খুলে Module ইনসার্ট করুন। নিচের ম্যাক্রোটি পেস্ট করুন।
Sub ExcelToOutlookSR()
Dim mApp As Object
Dim mMail As Object
Dim SendToMail As String
Dim MailSubject As String
Dim mMailBody As String
For Each r In Selection
SendToMail = Range("C" & r.Row)
MailSubject = Range("F" & r.Row)
mMailBody = Range("G" & r.Row)
Set mApp = CreateObject("Outlook.Application")
Set mMail = mApp.CreateItem(0)
With mMail
.To = SendToMail
.Subject = MailSubject
.Body = mMailBody
.Display ' You can use .Send
End With
Next r
End Sub
➤ কোডে,
- ম্যাক্রো প্রসিডিউর শুরু করে ভেরিয়েবল ডিক্লেয়ার করা হয়েছে Object এবং String- হিসেবে।
- সিলেকশনের প্রতিটি সারির জন্য VBA FOR লুপ চালানো হয়েছে ইমেইলের Send To, Subject, এবং Body সারির এন্ট্রি দিয়ে অ্যাসাইন করতে।
- ভেরিয়েবল অ্যাসাইন করা হয়েছে।
- VBA With স্টেটমেন্ট দিয়ে Outlook-এর আইটেমগুলো ( Send To, Mail Subject ইত্যাদি) পপুলেট করা হয়েছে। এখানে ম্যাক্রো শুধু Display কমান্ড এক্সিকিউট করে Outlook-এ ইমেইল ড্রাফট নিয়ে আসে। তবে Display-এর পরে বা বদলে Send কমান্ড ব্যবহার করলে Outlook নির্বাচিত প্রাপকদের ইমেইল পাঠিয়ে দেবে।
- VBA FOR লুপ শেষ করা হয়েছে।
Step 5: ওয়ার্কশীতে ফিরে Shape-এ রাইট-ক্লিক করে Assign Macro বেছে নিন ( Context Menu- থেকে)।
Step 6: Macro name-এ ম্যাক্রো (যেমন ExcelToOutlookSR) সিলেক্ট করুন এবং Macro in অপশনটি This Workbook হিসেবে বেছে নিন। OK ক্লিক করুন।
Step 7: এখন ওয়ার্কশীতে এক বা একাধিক কর্মচারী সিলেক্ট করে Shape Button-এ ক্লিক করুন।
Step 8: এক্সেল Outlook-কে লঞ্চ করবে এবং নির্বাচিত কর্মচারীদের ইমেইল তৈরি বা পাঠাবে। যেহেতু দুজন কর্মচারী সিলেক্ট করা হয়েছে, Outlook দুটি আলাদা ইমেইল ড্রাফট তৈরি করবে পাঠাতে প্রস্তুত।
যেহেতু ম্যাক্রো শুধু Display কমান্ড দিয়েছে, Outlook শুধু ইমেইল ড্রাফট দেখাবে, পাঠাবে না। Send কমান্ড ব্যবহার করলে সেল এন্ট্রি ব্যবহার করে এক্সেল থেকে আউটলকে স্বয়ংক্রিয়ভাবে ইমেইল পাঠানো যাবে।
পদ্ধতি ২: নির্দিষ্ট সেল ভ্যালুর ওপর ভিত্তি করে এক্সেল থেকে আউটলকে স্বয়ংক্রিয় ইমেইল পাঠানো
যদি আমরা টার্গেট অর্জনের পর এক্সেল থেকে আউটলকে স্বয়ংক্রিয় ইমেইল পাঠাতে চাই? একটি ম্যাক্রো কোড সহজেই এই কাজটি করতে পারে।
ধরুন, নিচের মতো Quarterly Sales Data আছে, টার্গেট অর্জন করার পর (যেমন Sales > 2000) স্বয়ংক্রিয়ভাবে Outlook-কে প্রম্পট করবে একটি নিশ্চিত ইমেইল আইডিতে মেইল পাঠাতে।
Step 1: নিচের ম্যাক্রো কোড যেকোনো Module-এ লিখুন।
Option Explicit
Dim Rng As Range
Sub Worksheet_Change(ByVal mRng As Range)
On Error Resume Next
If mRng.Cells.Count > 1 Then Exit Sub
Set Rng = Intersect(Range("F17"), mRng)
If Rng Is Nothing Then Exit Sub
If IsNumeric(mRng.Value) And Target.Value > 2000 Then
Call ExcelToOutlook
End If
End Sub
Sub ExcelToOutlook()
Dim mApp As Object
Dim mMail As Object
Dim mMailBody As String
Set mApp = CreateObject("Outlook.Application")
Set mMail = mApp.CreateItem(0)
mMailBody = "Greetings Sir" & vbNewLine & vbNewLine & _
"Our outlet has quarterly Sales more than the target." & vbNewLine & _
"It's a confirmation mail." & vbNewLine & vbNewLine & _
"Regards" & vbNewLine & _
"Outlet Team"
On Error Resume Next
With mMail
.To = "admin@wsxdn.com"
.CC = ""
.BCC = ""
.Subject = "Notification on Achieving Sales Target"
.Body = mMailBody
.Display 'or you can use .Send
End With
On Error GoTo 0
Set mMail = Nothing
Set mApp = Nothing
End Sub
➤ উপরের ছবি থেকে, সেকশনগুলো:
- একটি সেল (যেমন F17) একটি রেঞ্জের মধ্যে অ্যাসাইন করা হয়েছে VBA IF স্টেটমেন্ট এক্সিকিউট করার জন্য। যদি স্টেটমেন্ট True হয়, তবে ম্যাক্রো অন্য একটি ম্যাক্রো কল করে এক্সিকিউশনের জন্য।
- ভেরিয়েবল টাইপ ডিক্লেয়ার এবং অ্যাসাইন করা হয়েছে Outlook-এর এন্ট্রি পপুলেট করতে।
- VBA With স্টেটমেন্ট দিয়ে ভেরিয়েবল ইমেইল এন্ট্রিতে অ্যাসাইন করা হয়েছে। যদি সরাসরি ইমেইল পাঠাতে চান তবে Display-এর বদলে Send কমান্ড ব্যবহার করুন। প্রাপকের ইমেইল ম্যাক্রোর মধ্যে हार্ডকোড করা হয়েছে। অ্যাল্টারনেটিভ মেথড ব্যবহার করুন যদি আপনি অটোমেটিক্যালি প্রাপকের ইমেইল আইডি ইনসার্ট করতে চান।
- পূর্বে অ্যাসাইন করা কিছু ভেরিয়েবল ক্লিয়ার করা হয়েছে।
Step 2: ম্যাক্রো রান করতে F5 কী চাপুন। এক মুহূর্তে এক্সেল Outlook-কে আনে একটি ড্রাফট ইমেইল স্বয়ংক্রিয়ভাবে তৈরি করে নিচের ছবির মতো। আপনি Send ক্লিক করতে পারেন অথবা ম্যাক্রোর Send কমান্ড দিয়ে অটো-সেন্ড করতে পারেন।
পদ্ধতি ৩: VBA ম্যাক্রো ব্যবহার করে এক্টিভ ওয়ার্কশীটসহ আউটলকে ইমেইল পাঠানো
বিকল্পভাবে, এমন পরিস্থিতি হতে পারে যেখানে আমাদের একটি সম্পূর্ণ Active Sheet একটি নির্দিষ্ট ইমেইল ঠিকানায় পাঠাতে হয়। সেক্ষেত্রে আমরা একটি VBA Custom Function ব্যবহার করতে পারি যা ম্যাক্রোর মধ্যে কল করা হবে।
Step 1: নিচের ম্যাক্রো Module-এ ইনসার্ট করুন।
Function ExcelOutlook(mTo, mSub As String, Optional mCC As String, Optional mBd As String) As Boolean
On Error Resume Next
Dim mApp As Object
Dim rItem As Object
Set mApp = CreateObject("Outlook.Application")
Set rItem = mApp.CreateItem(0)
With rItem
.To = mTo
.CC = ""
.Subject = mSub
.Body = mBd
.Attachments.Add ActiveWorkbook.FullName
.Display 'or you can use .Send
End With
Set rItem = Nothing
Set mApp = Nothing
End Function
Sub OutlookMail()
Dim mTo As String
Dim mSub As String
Dim mBd As String
mTo = "admin@wsxdn.com"
mSub = "Quarterly Sales Data"
mBd = "Greetings Sir" & vbNewLine & vbNewLine & _
"Kindly find Outlet's Quarterly Sales data attached with this mail." & vbNewLine & _
"It's a notification mail." & vbNewLine & vbNewLine & _
"Regards" & vbNewLine & _
"Outlet Team"
If ExcelOutlook(mTo, mSub, , mBd) = True Then
MsgBox "Successfully created the Mail draft or Sent"
End If
End Sub
➤ কোডের সেকশনগুলো:
- ভেরিয়েবল ডিক্লেয়ার এবং সেট করা হয়েছে।
- VBA With স্টেটমেন্ট দিয়ে কমান্ড অ্যাসাইন করা হয়েছে। রিভিউ বা সরাসরি পাঠানোর জন্য Display বা Send কমান্ড ব্যবহার করুন।
- পূর্বে সেট করা ভেরিয়েবল ক্লিয়ার করা হয়েছে।
- VBA With কমান্ড টেক্সটসহ অ্যাসাইন করা হয়েছে।
- VBA Custom Function এক্সিকিউট করা হয়েছে।
Step 2: ম্যাক্রো এক্সিকিউট করতে F5 চাপুন, এবং tức্ক्षণা এক্সেল নিচের ছবির মতো রিভিউ করার জন্য Outlook-এ ড্রাফট ইমেইল নিয়ে আসবে। তারপর আপনি সেটি পাঠাতে পারবেন।
পদ্ধতি ৪: HYPERLINK ফাংশন ব্যবহার করে এক্সেল থেকে আউটলকে স্বয়ংক্রিয় ইমেইল পাঠানো
HYPERLINK ফাংশন এক্সেল সেলে একটি ক্লিকযোগ্য লিঙ্ক তৈরি করে যা Outlook-কে মিডিয়াম হিসেবে ব্যবহার করে এক্সেল থেকে স্বয়ংক্রিয় ইমেইল পাঠাতে সাহায্য করে।
Step 1: H5 সেলে নিচের ফর্মুলা লিখুন।
=HYPERLINK("MailTo:"&C5&"?Subject="&F5&"&cc="&$D$2&"&body="&G5,"Click Here")
HYPERLINK ফাংশন "MailTo:"&C5&"?Subject="&F5&"&cc="&$D$2&"&body="&G5-কে link_location, এবং "Click Here"-কে friendly_name হিসেবে নেয়।
Step 2: ENTER চাপুন লিঙ্ক পেস্ট করতে। তারপর লিঙ্কে ক্লিক করুন।
Step 3: এক্সেল আপনাকে Outlook-এ নিয়ে যাবে। সব Outlook এন্ট্রি এক্সেল ডাটা দিয়ে ভরা থাকবে। Send ক্লিক করুন।
Step 4: Fill Handle টেনে অন্য সেলগুলোতে ফর্মুলা প্রয়োগ করুন।
উপসংহার
VBA ম্যাক্রো ভেরিয়েন্ট এবং HYPERLINK ফাংশন এক্সেল থেকে আউটলকে স্বয়ংক্রিয় ইমেইল পাঠাতে খুব কার্যকর। আশা করি উপরের বর্ণিত পদ্ধতিগুলোর মধ্যে আপনার পছন্দের পদ্ধতিটি পেয়েছেন। আরও প্রশ্ন বা যোগাযোগ থাকলে কমেন্ট করুন।
সম্পর্কিত আর্টিকেলসমূহ
- এক্সেল ওয়ার্কশীট থেকে VBA ব্যবহার করে রিমাইন্ডার ইমেইল স্বয়ংক্রিয়ভাবে পাঠান
- ইমেইল দিয়ে এডিটেবল এক্সেল স্প্রেডশীট পাঠানো (৩টি কুইক মেথড)
- বডি সহ এক্সেল থেকে ইমেইল পাঠানোর ম্যাক্রো (৩টি ইউজফুল কেস)
- তারিখ ভিত্তিক এক্সেল থেকে স্বয়ংক্রিয় ইমেইল পাঠানো (৪টি পদ্ধতি)
- ম্যাক্রো ব্যবহার করে বডি সহ এক্সেল থেকে ইমেইল পাঠানো (সহজ ধাপাবলি)