ส่งเมลด้วย VBA ใน Excel ผ่าน Outlook
สมมุติว่า ใน Sheet ชื่อ users มีอีเมล์ ตั้งแต่เซลล์ B6:B20 และต้องการส่งเมล ไปยังอีเมลเหล่านั้น โดยใช้ Outlook จะทำอย่างไร
หลักการ
ก่อนอื่น ต้องทำการ Config โปรแกรม Outlook ให้สามารถใช้งานได้ก่อน โดยกำหนดว่าจะใช้ Serve ใดเป็นตัวส่งเมล์ จากนั้นจึง เปิด Excel ทำการอ้างอิงไปที่ Microsoft Outlook Object Library แล้วเขียนโค้ดส่งเมล์ และแนบกับปุ่ม เมื่อคลิกปุ่ม จะทำการส่งเมลทั้งหมดที่อยู่ในเซลล์ B6:B20
วิธีการ
อ้างอิง
http://msdn.microsoft.com/en-us/library/office/ff458119(v=office.11).aspx#odc_office_UseExcelObjectModeltoSendMail_Introduction
วิธีการ
- เปิด Excel 2010 และเรียกเมนู ผู้พัฒนา โดยไปที่ แฟ้ม > ตัวเลือก > กำหนด Ribbon เอง และเลือก ผู้พัฒนา
- อ้างอิง Outlook Object Library ให้เปิดหน้าจอเขียนโค้ด (กด Alt+F11) (หรือ นักพัฒนา > แสดงโค้ด ) แล้วไปที่ Tools > References และเลือก Library ที่ต้องการ
- สร้างโมดุลใหม่ โดยไปที่ เมนู Insert > Module
- ดับเบิ้ลคลิกที่ Module1 และสร้าง Procedure การเรียกใช้งาน Outlook ดังนี้Sub sendMyMail(addrss As String)
Dim OutApp As Object
Dim OutMail As Object
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
On Error Resume Next
With OutMail
.To = addrss
.CC = ""
.BCC = ""
.Subject = "ทดสอบ"
.Body = "ส่งเมลด้วย Excel VBA ผ่าน Outlook"
' แนบไฟล์
.Attachments.Add ("C:tmp\myPic.png")
.Send
End With
On Error GoTo 0
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
- สร้าง Procedure สำหรับอ่านข้อมูล และเรียกใช้งาน Outlook ดังนี้
Sub readDataAndSend()
Dim Counter As Long
Counter = 6 ' ข้อมูลเริ่มแ 6
'ให้อ่านจนหมดทุกอีเมล์ -- แต่ละอีเมล์ต้องติดกันจะเว้นแถวไม่ได้
Do Until ActiveWorkbook.Sheets("users").Cells(Counter, 2).Value = ""
sendMyMail ActiveWorkbook.Sheets("users").Cells(Counter, 2).Value
Counter = Counter + 1
Loop
End Sub - บันทึกไฟล์ เป็นนามสกุล xlsm
- สร้างปุ่ม สำหรับเรียกใช้งาน โดยกลับไปหน้าจอปกติ และเลือก แถบเมนู แทรก > รูปร่าง และเขียนข้อความ ดังภาพ
- คลิกขวาที่ปุ่มที่สร้าง และเลือก กำหนดแมโคร
- เลือก readAndSend แล้วกดตกลง
- เป็นอันเสร็จ เมื่อคลิกปุ่มนี้ Excel จะเรียน Outlook และทำการส่งอีเมลในคอลัมน์ B ที่มีอยู่ทั้งหมด
อ้างอิง
http://msdn.microsoft.com/en-us/library/office/ff458119(v=office.11).aspx#odc_office_UseExcelObjectModeltoSendMail_Introduction
ถ้าจะให้ตรง body โชว์รูปด้วยต้องทำงัยครับ
ตอบลบความคิดเห็นนี้ถูกผู้เขียนลบ
ตอบลบ