Trong bài viết dưới đây Taimienphi.vn sẽ hướng dẫn bạn cách gửi gửi email từ bảng tính Excel bằng Script VBA. Ngoài ra bạn đọc có thể tham khảo thêm một số bài viết đã có trên Taimienphi.vn để tìm hiểu cách di chuyển qua lại giữa các bảng tính, Worksheet trong Excel như thế nào nhé.
Có nhiều lý do mà người dùng muốn gửi email ngay bên trong bảng tính Excel. Giả sử nếu muốn nhận được thông báo từ nhân viên, người chịu trách nhiệm cập nhật tài liệu hoặc bảng tính hàng tuần, hoặc giả sử nếu muốn gửi bảng tính đến nhiều liên hệ với cùng một nội dung email cho nhiều liên hệ khác nhau.
Đôi khi vì chưa thử nên có nhiều người dùng nghĩ rằng việc tạo script để gửi email từ Excel sẽ phức tạp.
Trong bài viết đưới đây Taimienphi.vn sẽ hướng dẫn bạn cách gửi email từ bảng tính Excel bằng Script VBA, Collaboration Data Objects (CDO).
CDO là thành phần được sử dụng trong quá trình gửi email, được sử dụng trên các phiên bản Windows đầu tiên. Trước đây CDO còn có tên gọi là CDONTS, sau khi Windows 2000 và XP ra đời, nó được đổi tên là CDO. Thành phần này có sẵn trong cài đặt VBA trong Microsoft Word, Excel và có sẵn để sử dụng. Bằng cách sử dụng CDO giúp cho việc gửi email từ các sản phẩm Windows được tích hợp VBA trở nên dễ dàng hơn.
Thực hiện theo các bước dưới đây để gửi email từ bảng tính Excel bằng Script VBA:
Đầu tiên, truy cập tab Excel Developer. Trong tab Developer, click chọn Insert trong hộp Controls, sau đó chọn Command Button phù hợp.
Vẽ Command Button vào bảng tính, sau đó tạo một macro mới bằng cách click chọn Macros trên thanh ribbon Developer.
Khi bạn click chọn nút Create, trên màn hình sẽ hiển thị trình chỉnh sửa VBA.
Thêm tham chiếu vào thư viện CDO bằng cách điều hướng đến Tools =>References trên trình chỉnh sửa.
Cuộn xuống danh sách cho đến khi tìm thấy Microsoft CDO for Windows 2000 Library. Đánh tích chọn tùy chọn rồi click chọn OK.
Khi click chọn OK nhớ lưu lại tên hàm, nơi bạn có thể dán script.
Bước tiếp theo chúng ta cần làm là tạo các đối tượng mail và thiết lập các trường cần thiết để gửi email.
Cần lưu ý, có nhiều trường là tùy chọn, nhưng các trường From và To là bắt buộc.
Dim CDO_Mail As Object
Dim CDO_Config As Object
Dim SMTP_Config As Variant
Dim strSubject As String
Dim strFrom As String
Dim strTo As String
Dim strCc As String
Dim strBcc As String
Dim strBody As String
strSubject = "Results from Excel Spreadsheet"
strFrom = "rdube02@gmail.com"
strTo = "rdube02@gmail.com"
strCc = ""
strBcc = ""
strBody = "The total results for this quarter are: " & Str(Sheet1.Cells(2, 1))
Nếu muốn, bạn có thể tạo các chuỗi bất kỳ để tùy chỉnh email đầy đủ và gán nó cho biến strBody.
Ghép các thành phần của thư bằng cách sử dụng chuỗi & để chèn dữ liệu từ sheet Excel bất kỳ vào thông báo email như trong đoạn mã trên.
Tiếp theo chúng ta sẽ cấu hình CDO để sử dụng máy chủ SMTP bên ngoài bất kỳ để gửi email.
Ví dụ dưới đây thiết lập non-SSL thông qua Gmail. Trong trường hợp nếu cần sử dụng SSL, bạn có thể truy cập Github để tìm kiếm các mã nâng cao.
Set CDO_Mail = CreateObject("CDO.Message")
On Error GoTo Error_Handling
Set CDO_Config = CreateObject("CDO.Configuration")
CDO_Config.Load -1
Set SMTP_Config = CDO_Config.Fields
With SMTP_Config
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "email@website.com"
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "password"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
.Update
End With
With CDO_Mail
Set .Configuration = CDO_Config
End With
Sau khi đã cấu hình kết nối với máy chủ SMTP để gửi email, tất cả những gì chúng ta cần làm bây giờ là điền vào các khung phù hợp đối tượng CDO_Mail và phát lệnh Send.
Để làm được điều này, chúng ta sử dụng đoạn mã dưới đây:
CDO_Mail.Subject = strSubject
CDO_Mail.From = strFrom
CDO_Mail.To = strTo
CDO_Mail.TextBody = strBody
CDO_Mail.CC = strCc
CDO_Mail.BCC = strBcc
CDO_Mail.Send
Error_Handling:
If Err.Description <> "" Then MsgBox Err.Description
Trên màn hình sẽ không hiển thị bất kỳ cửa sổ pop-up hay các cảnh báo bảo mật nào trong trường hợp nếu sử dụng đối tượng mail Outlook.
CDO chỉ cần kết hợp email và sử dụng các chi tiết kết nối máy chủ SMTP để kích hoạt việc gửi mail. Đây là cách đơn giản và dễ dàng nhất để kết hợp email vào các script VBA trong Word hay Excel.
Để kết nối Command Button với script này, truy cập trình chỉnh sửa mã, sau đó click chọn Sheet1 để xem mã VBA cho sheet đó.
Nhập tên của hàm, nơi chúng ta sẽ dán đoạn script ở trên vào.
Thư nhận được trong hộp thư đến có dạng như dưới đây:
Lưu ý: Nếu nhận được thông báo lỗi The transport failed to connect to the server, cần đảm bảo bạn đã nhập đúng tên người dùng, mật khẩu, máy chủ SMTP và số cổng trong các dòng mã được liệt kê trong With SMTP_Config.
Để làm được điều này, chúng ta sẽ phải thay đổi macro. Truy cập Visual Basic Editor, sau đó sao chép và dán toàn bộ mã.
Tiếp theo chọn ThisWorkbook từ phân cấp Project.
Từ 2 menu ở góc trên cùng cửa sổ đoạn mã, chọn Workbook và chọn Open từ menu Methods.
Dán script email ở trên vào Private Sub Workbook_Open(). Điều này để chạy macro bất cứ khi nào chúng ta mở file Excel.
Tiếp theo mở Task Scheduler. Chúng ta sử dụng công cụ này để yêu cầu Windows tự động mở bảng tính theo định kỳ, lúc này này macro sẽ bắt đầu gửi email.
Chọn Create Basic Task... từ menu Action và thực hiện theo các bước hướng dẫn cho đến khi đến cửa sổ Action.
Chọn Start a program rồi click chọn Next.
Sử dụng nút Browse để tìm vị trí Excel trên máy tính hoặc sao chép và dán đường dẫn vào khung Program/script.
Tiếp theo nhập đường dẫn đến tài liệu Excel vào khung Add arguments.
Như vậy chúng ta vừa hoàn tất các bước tự động hóa quá trình gửi email từ bảng tính Excel.
Lưu ý: Bạn sẽ phải điều chỉnh các cài đặt Trust Center để đảm bảo macro hoạt động đúng cách.
Để làm được điều này, mở bảng tính và điều hướng File => Options => Trust Center.
Tại đây, tìm và click chọn Trust Center Settings, trên cửa sổ tiếp theo thiết lập là Never show information about blocked content.
Như vậy bài viết trên đây Taimienphi.vn vừa hướng dẫn bạn cách gửi email từ bảng tính Excel bằng Script VBA cũng như cách để tự động hóa quá trình để thao tác nhanh hơn, tiết kiệm thời gian và cải thiện hiệu suất làm việc. Ngoài ra nếu có bất kỳ thắc mắc hoặc câu hỏi nào cần giải đáp, bạn đọc có thể để lại ý kiến của mình trong phần bình luận bên dưới bài viết nhé.
Hiện nay Gmail đã có nhiều sự thay đổi về cả tính năng và giao diện nhằm phục vụ tốt hơn cho người sử dụng, bạn có thể đăng ký Gmail ngay từ bây giờ để bắt đầu sử dụng, cách đăng ký gmail cũng khá nhanh gọn và đơn giản.