Computer >> Máy Tính >  >> Phần mềm >> Thư

Gửi email từ Excel bằng VBA Macro và Outlook

Tôi đã có một nhiệm vụ gửi email cho những người dùng được liệt kê trong bảng tính Excel. Mỗi email phải chứa một số thông tin riêng cho từng người dùng. Tôi đã cố gắng thực hiện bằng cách sử dụng macro VBA trong Excel đã gửi email từ hồ sơ Outlook được định cấu hình trên máy tính. Đây là giải pháp của tôi.

Giả sử, bạn có một tệp Excel với các cột sau:

Email | Full Name | Last Password Change Date | Account status

Gửi email từ Excel bằng VBA Macro và Outlook

Nhiệm vụ của tôi là gửi một e-mail từ mẫu này đến từng người dùng trong danh sách:

Chủ đề :Trạng thái tài khoản của bạn trên miền woshub.com
Body :Dear% FullUsername%,
Tài khoản của bạn trong miền woshub.com ở trạng thái% status%
Ngày và giờ thay đổi mật khẩu cuối cùng là% pwdchange%

Tạo macro mới: Xem -> Macro . Chỉ định tên của macro ( send_email) và nhấp vào Tạo :

Gửi email từ Excel bằng VBA Macro và Outlook

Sao chép và dán đoạn mã sau vào trình chỉnh sửa VBA xuất hiện (Tôi đã đưa ra những nhận xét có liên quan đến nó). Để tự động hóa việc gửi email, tôi sẽ sử dụng chức năng CreateObject (“Outlook.Application”) cho phép tạo và sử dụng một đối tượng Outlook bên trong các tập lệnh VBA.

Quan trọng . Hồ sơ Outlook phải được định cấu hình trên máy tính gửi. Hộp thư này (và địa chỉ email) sẽ được sử dụng để gửi email.

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

Gửi email từ Excel bằng VBA Macro và Outlook

Lưu tệp Excel này dưới dạng. xlsm (một định dạng sổ làm việc Excel hỗ trợ macro). Để gửi email, hãy chọn quy trình đã tạo (macro) và nhấp vào Chạy.

Gửi email từ Excel bằng VBA Macro và Outlook

Macro sẽ lần lượt đi qua tất cả các hàng trên trang tính Excel, tạo và gửi email đến từng người nhận trong danh sách.