Hướng dẫn này sẽ chỉ cho bạn cách gửi email từ Excel qua Outlook bằng VBA.
Gửi Sổ làm việc Hoạt động
1234567891011121314151617181920 | Hàm SendActiveWorkbook (strTo As String, strSubject As String, strCC Tùy chọn As String, strBody Tùy chọn As String) As BooleanKhi có lỗi Tiếp tục tiếp theoDim appOutlook As ObjectDim mItem As Object'tạo một phiên bản mới của OutlookĐặt appOutlook = CreateObject ("Outlook.Application")Đặt mItem = appOutlook .CreateItem (0)Với mItem.To = strTo.CC = "".Subject = strSubject.Body = strBody.Attachments.Add ActiveWorkbook.FullName'sử dụng gửi để gửi ngay lập tức hoặc hiển thị để hiển thị trên màn hình.Display 'hoặc .SendKết thúc với'dọn dẹp đồ vậtĐặt mItem = Không có gìĐặt appOutlook = Không có gìChức năng kết thúc |
Hàm trên có thể được gọi bằng quy trình dưới đây
123456789101112131415 | Gửi phụ ()Dim strTo As StringDim strSubject As StringDim strBody dưới dạng chuỗi'điền các biếnstrTo = "[email protected]"strSubject = "Vui lòng tìm tệp tài chính đính kèm"strBody = "một số văn bản ở đây cho phần nội dung của email"'gọi hàm để gửi emailNếu SendActiveWorkbook (strTo, strSubject,, strBody) = true thìMsgbox "Tạo email thành công"KhácMsgbox "Không tạo được email!"Kết thúc nếuKết thúc Sub |
Sử dụng Early Binding để tham khảo Thư viện đối tượng Outlook
Đoạn mã trên sử dụng Liên kết muộn để tham chiếu đến Đối tượng Outlook. Bạn có thể thêm một tham chiếu vào Excel, và khai báo ứng dụng Outlook và Mục Thư Outlook bằng cách sử dụng Liên kết sớm nếu được ưu tiên. Early Binding giúp mã chạy nhanh hơn, nhưng giới hạn ở bạn vì người dùng sẽ cần có cùng một phiên bản Microsoft Office trên PC của họ.
Nhấp vào menu Công cụ và Tham chiếu để hiển thị hộp thoại tham chiếu.
Thêm tham chiếu vào Thư viện đối tượng Microsoft Outlook cho phiên bản Office mà bạn đang sử dụng.
Sau đó, bạn có thể sửa đổi mã của mình để sử dụng trực tiếp các tham chiếu này.
Một lợi thế lớn của việc ràng buộc sớm là danh sách thả xuống hiển thị cho bạn các đối tượng có sẵn để sử dụng!
Gửi một Trang tính từ Sổ làm việc Hoạt động
Để gửi một trang tính, trước tiên bạn cần tạo một sổ làm việc mới từ sổ làm việc hiện có chỉ với trang tính đó, sau đó gửi trang tính đó.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 | Hàm SendActiveWorksheet (strTo As String, strSubject As String, strCC Tùy chọn As String, Tùy chọn strBody As String) As BooleanLỗi GoTo eh'khai báo các biến để giữ các đối tượng được yêu cầuDim wbDestination As WorkbookDim strDestName As StringDim wbSource As WorkbookDim wsSource As WorksheetLàm mờ ứng dụng dưới dạng đối tượngDim OutMail As ObjectDim strTempName thành chuỗiDim strTempPath dưới dạng chuỗi'đầu tiên tạo sổ làm việc đíchĐặt wbDestination = Workbooks.AddstrDestName = wbDestination.Name'đặt bảng tính và sổ làm việc nguồnĐặt wbSource = ActiveWorkbookĐặt wsSource = wbSource.ActiveSheet'sao chép bảng hoạt động vào sổ làm việc mớiwsSource.Copy After: = Workbooks (strDestName) .Sheets (1)'save with a temp namestrTempPath = Môi trường $ ("tạm thời") & "\"strTempName = "Danh sách thu được từ" & wbSource.Name & ".xlsx"Với wbDestination.SaveAs strTempPath & strTempName'bây giờ gửi email cho sổ làm việc đíchĐặt OutApp = CreateObject ("Outlook.Application")Đặt OutMail = OutApp.CreateItem (0)Với OutMail.To = strTo.Subject = strSubject.Body = strBody.Attachments.Add wbDestination.FullName'sử dụng gửi để gửi ngay lập tức hoặc hiển thị để hiển thị trên màn hình.Display 'hoặc .DisplayKết thúc với.Đóng giảKết thúc với'xóa sổ làm việc tạm thời mà bạn đã đính kèm vào thư của mìnhGiết strTempPath & strTempName'dọn dẹp các đối tượng để giải phóng bộ nhớĐặt wbDestination = Không có gìĐặt wbSource = Không có gìĐặt wsSource = Không có gìSet OutMail = Không có gìĐặt OutApp = Không có gìChức năng thoátHở:MsgBox Err.DescriptionChức năng kết thúc |
và để chạy chức năng này, chúng ta có thể tạo quy trình sau
12345678910111213 | Sub SendSheetMail ()Dim strTo As StringDim strSubject As StringDim strBody dưới dạng chuỗistrTo = "[email protected]"strSubject = "Vui lòng tìm tệp tài chính đính kèm"strBody = "một số văn bản ở đây cho phần nội dung của email"Nếu SendActiveWorksheet (strTo, strSubject,, strBody) = True ThìMsgBox "Tạo email thành công"KhácMsgBox "Không tạo được email!"Kết thúc nếuKết thúc Sub |