Trang thông tin điện tử Công an Bắc Kạn

https://congan.backan.gov.vn

Cách gửi email từ bảng tính Excel bằng tập lệnh VBA

Gửi email từ Microsoft Excel chỉ yêu cầu một vài tập lệnh đơn giản. Thêm chức năng này vào bảng tính và bạn thực sự có thể tận dụng tối đa mọi tính năng trong Excel.

Gửi email từ Microsoft Excel chỉ yêu cầu một vài tập lệnh đơn giản. Thêm chức năng này vào bảng tính và bạn thực sự có thể tận dụng tối đa mọi tính năng trong Excel.

Quantrimang đã trình bày rất nhiều các macro Excel tuyệt vời, có thể thực hiện được những thứ giống như các tập lệnh VBA, nhưng không cần kiến ​​thức lập trình. Bên cạnh đó, còn có nhiều thứ nâng cao hơn bạn chỉ có thể làm với VBA, như tạo báo cáo trong bảng tính về tất cả thông tin trên máy tính của bạn.

Gửi email từ Excel với VBA

Tại sao lại gửi email từ Excel?

Có rất nhiều lý do tại sao bạn có thể muốn gửi email từ bên trong Microsoft Excel.

Có thể bạn có nhân viên cập nhật tài liệu hoặc bảng tính hàng tuần và bạn muốn nhận được thông báo qua email khi những cập nhật đó được thực hiện. Hoặc bạn có thể có một bảng tính chứa các địa chỉ mail liên lạc và bạn muốn gửi một email đến tất cả những địa chỉ đó cùng một lúc.

Có thể bạn đang nghĩ rằng việc sử dụng tập lệnh trong Excel sẽ phức tạp. Nhưng yên tâm đi! Thực hiện điều đó vô cùng đơn giản.

Bài viết này sẽ hướng dẫn bạn đọc sử dụng một tính năng có sẵn trong Excel VBA từ rất lâu rồi. Đó là Collaboration Data Objects (CDO).

Cách gửi email từ bảng tính Excel bằng tập lệnh VBA

CDO là một thành phần trong quá trình gửi email, được sử dụng từ những hệ điều Windows đầu tiên. Trước đây, nó được gọi là CDONTS, và sau đó với sự ra đời của Windows 2000XP, cái tên này đã được thay thế bằng "CDO for Windows 2000" (CDO cho Windows 2000). Thành phần này đã được bao gồm trong cài đặt VBA ở các ứng dụng Microsoft Word hoặc Excel và sẵn sàng để sử dụng.

Sử dụng thành phần làm cho việc gửi email từ bên trong các sản phẩm Windows với VBA cực kỳ dễ dàng. Trong ví dụ này, bạn sẽ sử dụng thành phần CDO trong Excel để gửi email chứa kết quả từ một ô Excel cụ thể.

Cách gửi email từ bảng tính Excel bằng tập lệnh VBA

Bước 1: Tạo VBA Macro

Bước đầu tiên là vào tab Excel Developer.

Bên trong tab Developer, nhấp vào Insert trong hộp Controls, rồi chọn Command Button thích hợp.

Cách gửi email từ bảng tính Excel bằng tập lệnh VBA - Ảnh minh hoạ 2

Vẽ nó vào trang tính và sau đó tạo macro mới cho trang tính bằng cách nhấp vào Macro trong ribbon Developer.

Cách gửi email từ bảng tính Excel bằng tập lệnh VBA - Ảnh minh hoạ 3

Khi bạn nhấp vào nút Create, nó sẽ mở 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 trong trình chỉnh sửa.

Cách gửi email từ bảng tính Excel bằng tập lệnh VBA - Ảnh minh hoạ 4

Cuộn xuống danh sách cho đến khi bạn tìm thấy Microsoft CDO for Windows 2000 Library. Đánh dấu vào hộp kiểm và nhấp OK.

Cách gửi email từ bảng tính Excel bằng tập lệnh VBA - Ảnh minh hoạ 5

Khi bạn nhấp vào OK, hãy ghi nhớ tên hàm mà bạn đang dán tập lệnh. Bạn sẽ cần nó sau này.

Bước 2: Thiết lập các trường “From” và “To” của CDO

Để thực hiện việc này, trước tiên bạn cần tạo các đối tượng trong mail và thiết lập tất cả các trường cần thiết để gửi email.

Hãy ghi nhớ rằng mặc dù nhiều trường là tùy chọn, bạn bắt buộc phải điền các trường FromTo.

Dim CDO_Mail As ObjectDim CDO_Config As ObjectDim SMTP_Config As VariantDim strSubject As StringDim strFrom As StringDim strTo As StringDim strCc As StringDim strBcc As StringDim strBody As StringstrSubject = "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))

Điều thú vị nhất là bạn có thể tạo bất kỳ chuỗi nào bạn muốn để tùy chỉnh một email đầy đủ và gán nó vào biến strBody.

Ghép các thành phần của email lại với nhau, bằng cách sử dụng chuỗi & để chèn dữ liệu từ bất kỳ trang tính Microsoft Excel nào vào ngay trong thư email, giống như được hiển thị ở trên.

Bước 3: Định cấu hình CDO để sử dụng SMTP bên ngoài

Phần tiếp theo là nơi bạn sẽ cấu hình CDO để sử dụng bất kỳ máy chủ SMTP bên ngoài nào với mục đích gửi email.

Ví dụ này là thiết lập không phải SSL thông qua Gmail. CDO có khả năng SSL, nhưng nằm ngoài phạm vi của bài viết này. Nếu bạn cần sử dụng SSL, code nâng cao này trong Github có thể hữu ích cho bạn.

Set CDO_Mail = CreateObject("CDO.Message")On Error GoTo Error_HandlingSet CDO_Config = CreateObject("CDO.Configuration")CDO_Config.Load -1Set SMTP_Config = CDO_Config.FieldsWith 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.UpdateEnd WithWith CDO_MailSet .Configuration = CDO_ConfigEnd With

Bước 4: Hoàn tất thiết lập CDO

Bây giờ bạn đã cấu hình xong kết nối đến máy chủ SMTP để gửi email. Tất cả những gì còn lại 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.

Đây là cách bạn làm điều đó:

CDO_Mail.Subject = strSubjectCDO_Mail.From = strFromCDO_Mail.To = strToCDO_Mail.TextBody = strBodyCDO_Mail.CC = strCcCDO_Mail.BCC = strBccCDO_Mail.SendError_Handling:If Err.Description <> "" Then MsgBox Err.Description

Sẽ không có bất kỳ cảnh báo bảo mật nào. Điều này có thể xảy ra khi bạn sử dụng đối tượng mail Outlook.

CDO chỉ cần đặt tất cả các thành phần của email lại với nhau và sử dụng chi tiết kết nối máy chủ SMTP để kích hoạt việc gửi mail. Đó là cách dễ dàng nhất để kết hợp email vào các tập lệnh Microsoft Word hoặc Excel VBA.

Để kết nối Command Button với tập lệnh này, hãy vào trình chỉnh sửa code và nhấp vào Sheet1 để xem VBA code cho trang tính đó.

Nhập tên của hàm mà bạn đã dán tập lệnh ở trên.

Cách gửi email từ bảng tính Excel bằng tập lệnh VBA - Ảnh minh hoạ 6

Đây là mail mà bạn sẽ nhận được trong hộp thư đến của mình:

Cách gửi email từ bảng tính Excel bằng tập lệnh VBA - Ảnh minh hoạ 7

Lưu ý: Nếu bạn nhận được lỗi The transport failed to connect to the server, hãy đả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 code được liệt kê bên dưới With SMTP_Config.

Tự động hóa toàn bộ quá trình

Tất cả đều diễn ra tốt đẹp và bạn có thể gửi email từ Excel chỉ bằng một lần nhấn nút. Tuy nhiên, bạn có thể muốn sử dụng chức năng này một cách thường xuyên, nên việc tự động hóa quy trình sẽ có ý nghĩa vô cùng quan trọng.

Để làm như vậy, bạn cần thực hiện thay đổi đối với macro. Đi đến Visual Basic Editor, sau đó sao chép và dán toàn bộ code mà bạn đã gộp lại.

Cách gửi email từ bảng tính Excel bằng tập lệnh VBA - Ảnh minh hoạ 8

Tiếp theo, chọn ThisWorkbook từ hệ thống phân cấp Project.

Từ hai trường dropdown ở đầu cửa sổ code, chọn WorkbookOpen từ menu dropdown Methods.

Dán tập lệnh email ở trên vào Private Sub Workbook_Open().

Điều 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 theo các khoảng thời gian được đặt trước. Tại thời điểm đó macro của bạn sẽ được kích hoạt và gửi email.

Cách gửi email từ bảng tính Excel bằng tập lệnh VBA - Ảnh minh hoạ 9

Chọn Create Basic Task... từ menu Action và làm việc theo cách của bạn thông qua trình hướng dẫn cho đến khi bạn tới màn hình Action.

Chọn Start a program và nhấn Next.

Cách gửi email từ bảng tính Excel bằng tập lệnh VBA - Ảnh minh hoạ 10

Sử dụng nút Browse để tìm vị trí của Microsoft Excel trên máy tính hoặc sao chép và dán đường dẫn vào trường Program/script.

Sau đó, nhập đường dẫn đến tài liệu Microsoft Excel của bạn vào trường Add arguments.

Hoàn tất quá trình và lịch biểu của bạn sẽ được thực hiện.

Bạn nên chạy thử nghiệm bằng cách lên lịch cho hành động trong một vài phút, sau đó sửa đổi lại khoảng thời gian, khi bạn xác nhận rằng nó đã hoạt động.

Lưu ý: Bạn có thể phải điều chỉnh cài đặt Trust Center để đảm bảo rằng macro chạy đúng cách.

Để làm như vậy, hãy mở bảng tính và điều hướng đến File > Options > Trust Center.

Từ đây, hãy nhấp vào Trust Center Settings và trên màn hình tiếp theo, hãy chọn Never show information about blocked content.

Microsoft Excel là một công cụ cực kỳ mạnh mẽ, nhưng việc học cách tận dụng tối đa nó có thể là một thử thách. Nếu bạn thực sự muốn làm chủ phần mềm, bạn sẽ cần phải thoải mái với VBA và đó không phải là một nhiệm vụ dễ dàng.

Tuy nhiên, với một ít kinh nghiệm về VBA, bạn sẽ sớm có thể lập trình Microsoft Excel thực hiện các tác vụ cơ bản một cách tự động, giúp bạn có thêm thời gian để tập trung vào các vấn đề quan trọng hơn.

Cần có thời gian để tích lũy kiến ​​thức chuyên môn về VBA, nhưng bạn sẽ sớm thấy được thành quả nếu thực sự nghiêm túc.

Chúc bạn thành công!

Xem thêm:

Nguồn tin: quantrimang.com

Bạn đã không sử dụng Site, Bấm vào đây để duy trì trạng thái đăng nhập. Thời gian chờ: 60 giây