Trong bài viết này, Mytour sẽ chỉ cho bạn cách gửi email từ bảng tính Excel bằng Script VBA. Ngoài ra, bạn cũng có thể xem các bài viết khác trên Mytour để hiểu cách di chuyển giữa các bảng tính và Worksheet trong Excel.
Gửi email từ Excel
Có nhiều lý do khiến người dùng muốn gửi email trực tiếp từ bảng tính Excel. Ví dụ, để nhận thông báo từ nhân viên, người quản lý cập nhật tài liệu hàng tuần, hoặc để gửi bảng tính đến nhiều liên hệ với cùng một nội dung email cho mỗi liên hệ.
Đôi khi, vì chưa thử nghiệm nên nhiều người nghĩ rằng việc tạo script để gửi email từ Excel sẽ phức tạp.
Trong bài viết này, Mytour sẽ hướng dẫn cách gửi email từ bảng tính Excel bằng Script VBA, Collaboration Data Objects (CDO).
CDO là một thành phần quan trọng trong việc gửi email, được sử dụng trên các phiên bản Windows đầu tiên. Trước đây, CDO được biết đến dưới tên gọi là CDONTS, nhưng sau khi Windows 2000 và XP ra đời, nó được đổi tên thành CDO. Thành phần này có sẵn trong cài đặt VBA của Microsoft Word, Excel và có thể được sử dụng một cách dễ dàng. Bằng cách sử dụng CDO, việc gửi email từ các ứng dụng Windows tích hợp VBA trở nên đơn giản hơn.
1. Gửi email từ bảng tính Excel bằng Script VBA
Thực hiện theo các bước sau để gửi email từ bảng tính Excel bằng Script VBA:
Bước 1: Tạo macro VBA
Trước tiên, vào tab Excel Developer. Trong tab Developer, nhấn Insert trong hộp Controls, sau đó chọn Command Button phù hợp.
Thêm Command Button vào bảng tính, sau đó tạo một macro mới bằng cách nhấn Macros trên thanh ribbon Developer.
Khi bấm vào nút Create, trình chỉnh sửa VBA sẽ xuất hiện trên màn hình.
Thêm tham chiếu vào thư viện CDO bằng cách vào 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 dấu vào ô tùy chọn và nhấn OK.
Khi nhấp vào OK, hãy nhớ ghi nhận tên hàm để bạn có thể dán đoạn mã vào đó.
Bước 2: Cấu hình các trường From và To
Tiếp theo, chúng ta cần tạo các đối tượng email và cài đặt các trường cần thiết để gửi email.
Chú ý rằng, mặc dù có nhiều trường là tùy chọn, nhưng các trường From và To là bắt buộc.
Khởi tạo CDO_Mail như một đối tượng
Tạo CDO_Config dưới dạng một đối tượng
Khởi tạo SMTP_Config như một biến dạng variant
Định nghĩa strSubject là một chuỗi
Định nghĩa strFrom là một chuỗi
Xác định strTo là một chuỗi
Khởi tạo strCc là một chuỗi
Định nghĩa strBcc như một chuỗi
Khai báo strBody là một chuỗi
Gán giá trị 'Kết quả từ Bảng tính Excel' cho strSubject
Đặt strFrom là '[email protected]'
Thiết lập strTo là '[email protected]'
strCc được gán giá trị là chuỗi rỗng
strBcc cũng được gán giá trị là chuỗi rỗng
strBody được thiết lập là 'Tổng kết kết quả cho quý này là: ' & Str(Sheet1.Cells(2, 1))
Nếu cần, bạn có thể tạo các chuỗi tùy chỉnh để điều chỉnh email và gán chúng cho biến strBody.
Tạo thư bằng cách sử dụng chuỗi & để chèn dữ liệu từ bảng tính Excel vào nội dung email như trong đoạn mã trên.
Bước 3: Thiết lập CDO để sử dụng SMTP bên ngoài
Tiếp theo, chúng ta sẽ cấu hình CDO để sử dụng máy chủ SMTP bên ngoài để gửi email.
Ví dụ dưới đây minh họa cách thiết lập non-SSL thông qua Gmail. Trong trường hợp cần sử dụng SSL, bạn có thể tìm kiếm các mã nâng cao trên Github.
Tạo CDO_Mail = CreateObject('CDO.Message')
Nếu có lỗi, chuyển tới Xử lý Lỗi
Tạo CDO_Config = CreateObject('CDO.Configuration')
Cấu hình CDO_Config.Load -1
Gán SMTP_Config = CDO_Config.Fields
Với SMTP_Config
Cài đặt .Item('http://schemas.microsoft.com/cdo/configuration/sendusing') = 2
Cài đặt .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 tất cài đặt CDO
Sau khi cấu hình kết nối với máy chủ SMTP để gửi email, chúng ta chỉ cần điền thông tin vào đối tượng CDO_Mail và gửi lệnh Send.
Để thực hiện điều này, chúng ta áp dụng mã sau đây:
CDO_Mail.Chủ_đề = strSubject
CDO_Mail.Từ = strFrom
CDO_Mail.Tới = strTo
CDO_Mail.Nội_dung_văn_bản = strBody
CDO_Mail.CC = strCc
CDO_Mail.BCC = strBcc
CDO_Mail.Gửi
Xử_lý_Lỗi:
Nếu Err.Description <> '' Thì MsgBox Err.Description
Trên màn hình sẽ không hiển thị bất kỳ cửa sổ pop-up hoặc các cảnh báo bảo mật nào 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 hoặc Excel.
Để liên_kết Command Button với mã này, vào trình chỉnh_sửa mã, sau đó chọn Sheet1 để xem mã VBA cho trang đó.
Nhập tên hàm, nơi chúng ta sẽ dán đoạn mã ở trên vào.
Email nhận được trong hộp thư đến sẽ có dạng như sau:
Lưu_ý: Nếu bạn nhận được thông_báo lỗi The transport failed to connect to the server, hãy đảm_bảo rằng 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.
2. Tự động hoá toàn bộ quy_trình
Để thực_hiện điều này, chúng_ta cần 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 cửa_sổ mã, chọn Workbook và chọn Open từ menu Methods.
Dán mã email vào Private Sub Workbook_Open(). Điều này giúp macro chạy mỗi khi mở file Excel.
Tiếp theo, mở Task Scheduler. Công_cụ này được sử_dụng để yêu_cầu Windows mở bảng tính tự_động theo định_kỳ, khi đó macro sẽ bắt_đầu gửi email.
Chọn Create Basic Task... từ menu Action và thực_hiện các bước hướng dẫn cho đến khi đến cửa_sổ Action.
Chọn Start a program sau đó click Next.
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.
Để thực_hiện điều này, hãy mở bảng tính và vào Tệp => Tùy_chọn => Trung_tâm Tin_cậy.
Tại đây, tìm và click chọn Cài_đặt Trung_tâm Tin_cậy, trên cửa_sổ tiếp theo đặt là Không bao_giờ hiển_thị thông_tin về nội_dung bị chặn.
Như_vậy bài_viết trên đây Mytour 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_suat 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.
