ฉันมีงานในการส่งอีเมลไปยังผู้ใช้ที่ระบุไว้ในสเปรดชีต Excel อีเมลแต่ละฉบับต้องมีข้อมูลบางอย่างสำหรับผู้ใช้แต่ละคน ฉันพยายามทำโดยใช้มาโคร VBA ใน Excel ที่ส่งอีเมลจากโปรไฟล์ Outlook ที่กำหนดค่าไว้ในคอมพิวเตอร์ นี่คือทางออกของฉัน
สมมติว่าคุณมีไฟล์ Excel ที่มีคอลัมน์ต่อไปนี้:
Email | Full Name | Last Password Change Date | Account status
งานของฉันคือการส่งอีเมลดังกล่าวจากเทมเพลตนี้ไปยังผู้ใช้แต่ละคนในรายการ:
เรื่อง :สถานะบัญชีของคุณบนโดเมน woshub.comเนื้อหา :เรียน %FullUsername%
บัญชีของคุณในโดเมน woshub.com อยู่ในสถานะ %status%
วันที่และเวลาของการเปลี่ยนรหัสผ่านครั้งล่าสุดคือ %pwdchange%
สร้างมาโครใหม่:ดู -> มาโคร . ระบุชื่อมาโคร (send_email) และคลิกสร้าง :
คัดลอกและวางโค้ดต่อไปนี้ลงในตัวแก้ไข VBA ที่ปรากฏขึ้น (ฉันได้แสดงความคิดเห็นที่เกี่ยวข้องแล้ว) ในการทำให้การส่งอีเมลเป็นแบบอัตโนมัติ ฉันจะใช้ฟังก์ชัน CreateObject (“Outlook.Application”) ที่อนุญาตให้สร้างและใช้วัตถุ Outlook ภายในสคริปต์ VBA
สำคัญ . ต้องกำหนดค่าโปรไฟล์ Outlook บนคอมพิวเตอร์ที่ส่ง กล่องจดหมายนี้ (และที่อยู่อีเมล) จะถูกใช้เพื่อส่งอีเมล
Sub send_email()
Dim olApp As Object
Dim olMailItm As Object
Dim iCounter As Integer
Dim Dest As Variant
Dim SDest As String
' Subject
strSubj = "Your account status on woshub.com domain"
On Error GoTo dbg
' Create a new Outlook object
Set olApp = CreateObject("Outlook.Application")
For iCounter = 1 To WorksheetFunction.CountA(Columns(1))
' Create a new item (email) in Outlook
Set olMailItm = olApp.CreateItem(0)
strBody = ""
useremail = Cells(iCounter, 1).Value
FullUsername = Cells(iCounter, 2).Value
Status = Cells(iCounter, 4).Value
pwdchange = Cells(iCounter, 3).Value
'Make the body of an email
strBody = "Dear " & FullUsername & vbCrLf
strBody = strBody & " Your account in woshub.com domain is in" & Status & “ state” & vbCrLf
strBody = strBody & "The date and time of the last password change is" & pwdchange & vbCrLf
olMailItm.To = useremail
olMailItm.Subject = strSubj
olMailItm.BodyFormat = 1
' 1 – text format of an email, 2 - HTML format
olMailItm.Body = strBody
olMailItm.Send
Set olMailItm = Nothing
Next iCounter
Set olApp = Nothing
dbg:
'Display errors, if any
If Err.Description <> "" Then MsgBox Err.Description
End Sub
บันทึกไฟล์ Excel นี้เป็น .xlsm (รูปแบบของสมุดงาน Excel ที่รองรับมาโคร) หากต้องการส่งอีเมล ให้เลือกขั้นตอนที่สร้างขึ้น (มาโคร) แล้วคลิกเรียกใช้
แมโครจะผ่านแถวทั้งหมดในแผ่นงาน Excel ทีละรายการ สร้างและส่งอีเมลไปยังผู้รับแต่ละรายในรายการ