เมื่อผู้ใช้ส่งอีเมลให้ลูกค้าหรือหัวหน้า การติดตามเป็นเรื่องยาก ในกรณีนี้ Excel ช่วยได้ ดังนั้น "ส่งอีเมลอัตโนมัติจาก Excel ไป Outlook" จึงเป็นวิธีที่ประหยัดเวลาได้จริง Excel VBA Macros และฟังก์ชัน HYPERLINK สามารถส่งอีเมลอัตโนมัติหรือสร้าง草稿ได้จากข้อมูลใน Excel
สมมติว่าเรามีข้อมูล Employee Restructured Salary ใน Excel และต้องการส่งอีเมลอัตโนมัติโดยใช้ Outlook
ดาวน์โหลดไฟล์ Excel Workbook
⧭ เปิด Microsoft Visual Basic และแทรกโค้ดใน Module
ก่อนจะสาธิตวิธีต่างๆ จำเป็นต้องรู้วิธีเปิดและแทรก Module ใน Microsoft Visual Basic ใน Excel
🔄 เปิด Microsoft Visual Basic: มีหลักๆ 3 วิธี
1. ใช้คีย์ลัด: กด ALT+F11 พร้อมกันเพื่อเปิดหน้าต่าง Microsoft Visual Basic
2. ใช้แท็บ Developer: ในเวิร์กชีต Excel ไปที่ Developer Tab > เลือก Visual Basic หน้าต่าง Microsoft Visual Basic จะปรากฏ
3. ใช้แท็บ Worksheet: ไปที่เวิร์กชีตใดๆ Right-Click > เลือก View Code (จาก Context Menu)
🔄 แทรก Module ใน Microsoft Visual Basic: มี 2 วิธี
1. ใช้ตัวเลือกของ Sheet: หลังเปิด Microsoft Visual Basic เลือก Worksheet > Right-Click > เลือก Insert (จาก Context Menu) > เลือก Module
2. ใช้ Toolbar: เลือก Insert (จาก Toolbar) > เลือก Module
4 วิธีง่ายๆ ส่งอีเมลอัตโนมัติจาก Excel ไป Outlook
วิธีที่ 1: ใช้ VBA Macro ส่งอีเมลอัตโนมัติผ่าน Outlook ให้ผู้รับที่เลือก
เราต้องการสร้าง ปุ่ม Macro เพื่อส่งเมล์ให้ผู้รับที่เลือกเพียงคลิกเดียว
ขั้นตอนที่ 1: ไปที่แท็บ Insert > Shapes > เลือกรูปทรงใดๆ (เช่น Rectangular: Rounded Corners)
ขั้นตอนที่ 2: ลาก Plus Icon วางที่ต้องการ
ขั้นตอนที่ 3: เลือก Shape Fill และ Outline Color ที่ชอบ คลิกขวา เลือก Edit Text เพื่อใส่ข้อความ
ขั้นตอนที่ 4: ใช้คำแนะนำข้างบนเปิด Microsoft Visual Basic แทรก Module วางโค้ด Macro ต่อไปนี้:
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 ' สามารถใช้ .Send แทนได้
End With
Next r
End Sub
➤ ในโค้ด:
1 – เริ่มกระบวนการ Macro โดยประกาศตัวแปรเป็น Object และ String
2 – รัน VBA FOR loop สำหรับแต่ละแถวใน Selection เพื่อกำหนด Send To, Subject, Body ของอีเมลจากข้อมูลแถว
3 – กำหนดค่าตัวแปร
4 – ใช้ VBA With statement กำหนดรายการ Outlook เช่น Send To, Mail Subject โค้ดนี้ใช้คำสั่ง Display เพื่อเปิด Outlook พร้อม草稿อีเมล แต่ถ้าใช้คำสั่ง Send แทนหรือหลัง Display จะส่งอีเมลไปยังผู้รับที่เลือกทันที
5 – จบ VBA FOR loop
ขั้นตอนที่ 5: กลับไปที่เวิร์กชีต คลิกขวาที่ Shape เลือก Assign Macro จาก Context Menu
ขั้นตอนที่ 6: เลือก Macro (เช่น ExcelToOutlookSR) ภายใต้ Macro name และเลือก Macro in เป็น This Workbook กด OK
ขั้นตอนที่ 7: ในเวิร์กชีต เลือกพนักงาน 1 คนหรือหลายคน แล้วคลิก ปุ่ม Shape
ขั้นตอนที่ 8: Excel จะเรียก Outlook สร้างหรือส่งอีเมลให้พนักงานที่เลือก เนื่องจากเลือก 2 คน Outlook จึงสร้าง草稿อีเมล 2 ฉบับพร้อมส่ง
เนื่องจาก Macro ให้แค่คำสั่ง Display Outlook แค่แสดง草稿 ไม่ส่งอัตโนมัติ ใช้คำสั่ง Send เพื่อส่งอัตโนมัติจาก Excel ไป Outlook โดยใช้ข้อมูลเซลล์
อ่านเพิ่มเติม: Excel Macro ส่งอีเมลอัตโนมัติ (3 ตัวอย่างที่เหมาะสม)
วิธีที่ 2: ส่งอีเมลอัตโนมัติจาก Excel ไป Outlook ตามค่าเซลล์เฉพาะ
ถ้าต้องการส่งอีเมลอัตโนมัติเมื่อบรรลุเป้าหมายจาก Excel ไป Outlook? โค้ด Macro สามารถทำได้ง่าย
สมมติมีข้อมูล Quarterly Sales Data เมื่อบรรลุเป้าหมาย (เช่น Sales > 2000) จะเรียก Outlook ส่งอีเมลจาก Excel ไปที่อีเมลที่กำหนด
ขั้นตอนที่ 1: พิมพ์โค้ด Macro ต่อไปนี้ใน 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 ' หรือใช้ .Send
End With
On Error GoTo 0
Set mMail = Nothing
Set mApp = Nothing
End Sub
➤ จากโค้ดข้างต้น ในแต่ละส่วน:
1 – กำหนดเซลล์ (เช่น F17) ภายในช่วงเพื่อรัน VBA IF statement หากผลลัพธ์เป็น True จะเรียก Macro อื่นทำงาน
2 – ประกาศชนิดตัวแปรและกำหนดให้เติมข้อมูล Outlook
3 – ใช้ VBA With statement กำหนดตัวแปรให้กับรายการอีเมล ใช้คำสั่ง Send แทน Display หากต้องการส่งโดยไม่ตรวจสอบ อีเมลผู้รับถูกใส่ใน Macro ใช้วิธีอื่นถ้าต้องการใส่อีเมลผู้รับอัตโนมัติ
4 – ล้างตัวแปรบางตัวที่กำหนดไว้
ขั้นตอนที่ 2: กด F5 เพื่อรัน Macro ทันที Excel จะเรียก Outlook พร้อม草稿อีเมลที่สร้างอัตโนมัติ คุณสามารถกด Send หรือส่งอัตโนมัติด้วยคำสั่ง Send ใน Macro
อ่านเพิ่มเติม: ส่งอีเมลอัตโนมัติจาก Excel ตามเนื้อหาเซลล์ (2 วิธี)
บทความคล้ายกัน
- วิธีดูว่าใครอยู่ในไฟล์ Excel แบบแชร์ (พร้อมขั้นตอนเร็ว)
- เปิดใช้งาน Share Workbook ใน Excel
- วิธีแชร์ไฟล์ Excel ให้หลายคนใช้งาน
- วิธีใช้ Macro ส่งอีเมลจาก Excel พร้อมไฟล์แนบ
วิธีที่ 3: ใช้ VBA Macro ส่งอีเมลพร้อม Active Worksheet จาก Excel โดย Outlook
อาจมีกรณีที่ต้องส่ง Active Sheet ทั้งแผ่นไปที่อีเมลที่กำหนด ในกรณีนี้ สามารถใช้ VBA Custom Function เรียกใช้ภายใน Macro
ขั้นตอนที่ 1: แทรก Macro ด้านล่างใน 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 ' หรือใช้ .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
➤ จากโค้ดข้างต้น ส่วนต่างๆ:
1 – ประกาศและตั้งค่าตัวแปร
2 – กำหนดคำสั่งด้วย VBA With statement ใช้ Display หรือ Send สำหรับตรวจสอบหรือส่งโดยตรง
3 – ล้างตัวแปรที่ตั้งค่าไว้ก่อนหน้า
4 – กำหนดคำสั่ง VBA With พร้อมข้อความ
5 – เรียกใช้ VBA Custom Function
ขั้นตอนที่ 2: กด F5 รัน Macro ทันที Excel จะเรียก Outlook พร้อม草稿อีเมลให้ตรวจสอบ คุณสามารถส่งได้เลย
อ่านเพิ่มเติม: วิธีส่งอีเมลจำนวนมากจาก Outlook ด้วย Excel (3 วิธี)
วิธีที่ 4: ส่งอีเมลอัตโนมัติจาก Excel ไป Outlook ด้วยฟังก์ชัน HYPERLINK
ฟังก์ชัน HYPERLINK สร้างลิงก์ที่คลิกได้ในเซลล์ Excel เพื่อเปิด Outlook เป็นสื่อกลางส่งอีเมลอัตโนมัติจาก Excel
ขั้นตอนที่ 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
ขั้นตอนที่ 2: กด ENTER วางลิงก์ แล้วคลิกที่ลิงก์
ขั้นตอนที่ 3: Excel จะนำคุณไป Outlook ทุกช่องข้อมูล Outlook จะถูกเติมด้วยข้อมูลจาก Excel กด Send
ขั้นตอนที่ 4: ลาก Fill Handle ใช้สูตรกับเซลล์อื่นๆ
อ่านเพิ่มเติม: วิธีส่งอีเมลอัตโนมัติเมื่อเงื่อนไขตรงกันใน Excel
สรุป
VBA Macro Variants และฟังก์ชัน HYPERLINK ช่วยได้จริงขณะส่งอีเมลอัตโนมัติจาก Excel ไป Outlook หวังว่าคุณจะพบวิธีที่ชอบในข้างต้น คอมเมนต์ได้หากมีคำถามเพิ่มเติมหรือมีสิ่งเพิ่มเติม
บทความเกี่ยวข้อง
- ส่งอีเมลเตือนอัตโนมัติจากเวิร์กชีต Excel ด้วย VBA
- วิธีส่งสเปรดชีต Excel ที่แก้ไขได้ทางอีเมล (3 วิธีเร็ว)
- Macro ส่งอีเมลจาก Excel พร้อมเนื้อหา (3 กรณีที่มีประโยชน์)
- วิธีส่งอีเมลอัตโนมัติจาก Excel ตามวันที่
- วิธีส่งอีเมลจาก Excel พร้อมเนื้อหาโดยใช้ Macro (พร้อมขั้นตอนง่ายๆ)