Chào mọi người,
Dạo này công việc của mình liên quan nhiều đến việc gửi báo cáo hàng tuần cho sếp và các phòng ban khác. Mỗi lần như vậy đều phải mở email, đính kèm file, gõ nội dung rồi mới gửi. Khá tốn thời gian và dễ quên.
Sau một hồi tìm hiểu, mình đã viết được một đoạn code VBA nho nhỏ để tự động hóa việc này. Code sẽ tự động mở Outlook, tạo một email mới, đính kèm file báo cáo (mình quy định sẵn tên file và thư mục chứa), điền sẵn tiêu đề và nội dung email cơ bản. Mình chỉ cần kiểm tra lại và bấm gửi.
Đây là đoạn code mình đang dùng, chia sẻ để mọi người tham khảo và đóng góp ý kiến:
Sub SendWeeklyReport() ' Khai báo biến Dim OutlookApp As Object Dim MailItem As Object Dim FilePath As String Dim FileName As String Dim Recipient As String Dim Subject As String Dim Body As String ' Thiết lập đường dẫn và tên file báo cáo FilePath = "C:\BaoCao\" ' Thay đổi đường dẫn thư mục của bạn FileName = "BaoCao_Tuan_" & Format(Date, "yyyy-mm-dd") & ".xlsx" ' Tên file có dạng BaoCao_Tuan_YYYY-MM-DD.xlsx ' Địa chỉ người nhận Recipient = "sep.abc@example.com" ' Thay bằng địa chỉ email của bạn ' Tiêu đề email Subject = "Báo cáo Tuần " & Format(Date, "yyyy-mm-dd") ' Nội dung email Body = "Kính gửi Anh/Chị,
Em xin gửi báo cáo tuần. Vui lòng xem file đính kèm.
Trân trọng,
[Tên của bạn]" ' Khởi tạo đối tượng Outlook Application On Error Resume Next Set OutlookApp = GetObject(, "Outlook.Application") If OutlookApp Is Nothing Then Set OutlookApp = CreateObject("Outlook.Application") End If ' Tạo một mail mới Set MailItem = OutlookApp.CreateItem(0) ' 0 = olMailItem With MailItem .To = Recipient .Subject = Subject .Body = Body .Attachments.Add FilePath & FileName .Display ' Sử dụng .Send để gửi trực tiếp mà không cần xem lại End With ' Giải phóng biến Set MailItem = Nothing Set OutlookApp = Nothing MsgBox "Email báo cáo đã được tạo!", vbInformation End SubLưu ý:
- Bạn cần thay đổi
FilePath,FileName,Recipientvà nội dungBodycho phù hợp với tình huống của mình. - Đoạn code trên sẽ mở email ra để bạn kiểm tra trước khi gửi. Nếu muốn gửi tự động hoàn toàn, bạn có thể thay
.Displaybằng.Send. Tuy nhiên, mình khuyến khích dùng.Displayđể đảm bảo không có sai sót. - Đảm bảo rằng bạn đã cài đặt Outlook và thiết lập tài khoản email.
Hy vọng mẹo nhỏ này sẽ giúp ích cho các bạn. Nếu có cách làm hay hơn hoặc gặp lỗi gì, mọi người cùng thảo luận nhé!