Hướng dẫn gửi email từ bảng tính Excel bằng tập lệnh VBA
Sử dụng tập lệnh VBA trong Excel không đòi hỏi bạn cần có kiến thức lập trình. VBA giúp bạn có thể làm nhiều nhiệm vụ nâng cao như tạo báo cáo dạng bảng tính chứa tất cả thông tin PC, gửi email trực tiếp từ bảng tính…
Để gửi email từ Microsoft Excel chỉ cần vài tập lệnh đơn giản. Đừng ngại bổ sung tính năng này vào bảng tính nếu muốn thực sự tận dụng tối đa chức năng của phần mềm văn phòng Excel.
Gửi email từ Excel
Có rất nhiều lí do khiến bạn muốn gửi email ngay tại Microsoft Excel. Ví dụ: Nhân viên của bạn cập nhật tài liệu, bảng tính hàng tuần và bạn muốn nhận thông báo qua email khi hành động đó hoàn tất hay đôi khi, bạn muốn gửi email tới tất cả địa chỉ liên hệ trong một bảng tính cùng lúc…
Ắt hẳn bạn từng nghĩ dùng tập lệnh gửi email từ Excel phức tạp nhưng sự thật nó đơn giản lắm đấy. Bài viết này sẽ hướng dẫn bạn tận dụng một tính năng có sẵn trong Excel VBA từ lâu, mang tên Collaboration Data Objects (CDO).
CDO là một thành phần nhắn tin được sử dụng trong Windows ngay từ các phiên bản đầu. Nó từng có tên gọi là CDONTS. Sau khi Windows 2000 & XP ra đời, “CDO for Windows 2000” đã thay thế nó. Thành phần này bao gồm trong cài đặt VBA ở Microsoft Word hoặc Excel và sẵn sàng để người dùng sử dụng bất cứ lúc nào.
Sử dụng thành phần này gửi email trong các sản phẩm Windows cùng với VBA cực kỳ dễ dàng. Ví dụ bài viết này sử dụng CDO ở Excel để gửi email chứa kết quả trong một ô.
Bước 1: Tạo VBA Macro
Đầu tiên, tới tab Excel Developer > click Insert ở bảng Controls, rồi chọn một nút lệnh.
Kéo nó vào bảng tính này, rồi tạo một macro mới bằng cách click Macros trong ribbon Developer.
Khi click nút Create, nó sẽ mở ra trình chỉnh sửa VBA.
Thêm tham chiếu tới thư viện CDO bằng cách điều hướng tới Tools > References trong trình chỉnh sửa.
Cuộn xuống danh sách cho tới khi bạn thấy Microsoft CDO for Windows 2000 Library. Đánh dấu vào hộp kiểm và click OK.
Khi click OK, ghi chú tên hàm tại nơi dán tập lệnh bởi bạn sẽ cần tới nó sau này.
Bước 2: Thiết lập trường CDO “From” và “To”
Để làm điều này, đầu tiên, bạn cần tạo các đối tượng liên quan tới thư điện tử và thiết lập tất cả trường gửi email cần thiết.
Nhớ rằng dù nhiều trường có thể có hoặc không nhưng From và To bắt buộc phải 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 = "[email protected]"
strTo = "[email protected]"
strCc = ""
strBcc = ""
strBody = "The total results for this quarter are: " & Str(Sheet1.Cells(2, 1))
Điều thú vị ở đây là bạn có thể tạo mọi chuỗi mong muốn để tùy biến toàn bộ tin nhắn qua email và gán cho nó biến strBody.
Ghép các thành phần trong nội dung thư điện tử lại với nhau bằng cách sử dụng chuỗi & để chèn dữ liệu từ bảng tính Microsoft Excel bất kỳ ngay trong email (như hiển thị ở trên).
Bước 3: Cấu hình CDO để sử dụng SMTP ngoài
Phần code tiếp theo là nơi bạn cấu hình CDO sử dụng server SMTP bên ngoài bất kỳ để gửi email.
Ví dụ này không thiết lập SSL qua Gmail, CDO có thể thay thế SSL nhưng nó nằm ngoài phạm vi bài viết này. Nếu cần sử dụng SSL, code nâng cao trong Github có thể giúp bạn.
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 protected]"
.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
Bước 4: Hoàn thành thiết lập CDO
Giờ bạn đã cấu hình xong kết nối tới server SMTP để gửi email. Toàn bộ việc bạn phải làm là điền vào các trường thích hợp cho CDO_Mail object và phát lệnh Send.
Dưới đây là cách làm điều đó:
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
Không có bất kỳ pop-up hay cảnh báo bảo mật nào hiện ra như bạn thường thấy lúc sử dụng đối tượng email Outlook.
CDO đơn giản đặt các thành phần email cạnh nhau và sử dụng chi tiết kết nối máy chủ để kích hoạt gửi thông tin. Đây là cách dễ nhất để kết hợp email vào Microsoft Word hoặc tập lệnh Excel VBA.
Để kết nối nút lệnh vào script này, truy cập trình chỉnh sửa code và click Sheet1 để xem code VBA của bảng tính đó.
Gõ tên hàm tại nơi bạn đã dán tập lệnh trên.
Đây là thông tin bạn nhận được trong hòm thư đến.
Lưu ý: Nếu nhận được báo lỗi The transport failed to connect to the server, đảm bảo bạn đã nhập đúng tên người dùng, mật khẩu, server SMTP và số cổng trong dòng code liệt kê tại With SMTP_Config.
Nâng cao và tự động hóa toàn bộ quá trình
Gửi email từ Excel bằng một nút bấm thực sự an toàn và tiện lợi. Nếu muốn sử dụng tính năng này thường xuyên, bạn có thể tự động hóa nó.
Để làm điều này, bạn cần thay đổi macro. Tới Visual Basic Editor, sao chép và dán toàn bộ code đã tập hợp lại. Tiếp theo, chọn ThisWorkbook từ hệ thống phân cấp Project.
Từ hai trường thả xuống ở phía trên đầu cửa sổ code, chọn Workbook và click Open từ menu Methods rơi xuống. Dán tập lệnh email ở trên vào Private Sub Workbook_Open(). Hành động này sẽ chạy macro bất cứ khi nào bạn mở file Excel.
Tiếp theo, mở Task Scheduler. Bạn sẽ sử dụng công cụ này để yêu cầu Windows tự động mở bảng tính ở khoảng thời gian quy định. Lúc đó, macro của bạn sẽ được kích hoạt và gửi email.
Chọn Create Basic Task… từ menu Action và làm theo hướng dẫn cho tới khi bạn tới màn hình Action.
Chọn Start a program và click Next.
Sử dụng nút Browse để tìm vị trí Microsoft Excel trên máy tính hoặc sao chép & dán đường dẫn trong trường Program/script.
Sau đó, nhập đường dẫn tới tài liệu Microsoft Excel vào trường Add arguments.
Hoàn thành hướng dẫn và lịch biểu bạn lập sẽ được thực hiện.
Bạn nên chạy thử tính năng này bằng cách lập lịch hành động trong vài phút sắp tới, rồi sửa lại tác vụ đó sau khi bạn thấy nó làm việc hiệu quả.
Lưu ý: Bạn có thể phải điều chỉnh cài đặt Trust Center để đảm bảo macro đó chạy đúng như sau:
Mở bảng tính và điều hướng tới File > Options > Trust Center.
Tại đây, click Trust Center Settings. Ở màn hình tiếp theo, chọn Never show information about blocked content.
Microsoft Excel là công cụ vô cùng mạnh mẽ nhưng học hết cách sử dụng của nó đôi khi thực sự là thử thách với nhiều người. Nếu muốn nắm vững phần mềm này, bạn cần biết cách dùng VBA. Điều đó không hề dễ dàng.
Tuy nhiên, với một chút kinh nghiệm VBA, bạn có thể tự động hóa các nhiệm vụ cơ bản trên Microsoft Excel và có nhiều thời gian tập trung vào các công việc quan trọng hơn.
Hi vọng bài viết hữu ích với các bạn. Chúc các bạn thành công!