Menu

Tự động hóa gửi email báo cáo hàng tuần bằng Excel và Outlook

Trà Bảo An 12/03/2026 02:37 360 lượt xem 2 trả lời

Chào các anh chị, hôm nay em muốn chia sẻ một cách tự động hóa công việc mà em đã áp dụng khá hiệu quả trong việc gửi báo cáo hàng tuần. Công việc này trước đây khá tốn thời gian khi cứ mỗi cuối tuần là lại phải copy paste dữ liệu rồi gửi email cho sếp.

Sau một thời gian tìm hiểu, em đã kết hợp được Excel và Outlook để tự động hóa hoàn toàn quá trình này. Về cơ bản, chúng ta sẽ sử dụng VBA để:

  • Lấy dữ liệu báo cáo từ một file Excel khác (hoặc ngay trên file hiện tại).
  • Định dạng báo cáo (có thể là copy sang một sheet mới, hoặc tạo file PDF).
  • Tạo một email mới trong Outlook.
  • Gắn file báo cáo vào email.
  • Gửi email đến danh sách người nhận đã định sẵn.

Để làm được điều này, bạn cần bật "Microsoft Outlook Object Library" trong VBA Editor (Tools -> References). Dưới đây là một đoạn code ví dụ minh họa cho việc gửi email đơn giản:

Sub SendReportEmail()
    Dim OutApp As Object
    Dim OutMail As Object
    
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0) ' 0 = olMailItem
    
    With OutMail
        .To = "nguoinhan@example.com"
        .CC = "sếp@example.com"
        .Subject = "Báo cáo tuần " & Format(Date, "dd/mm/yyyy")
        .Body = "Kính gửi anh/chị,"
        .Body = .Body & vbCrLf & vbCrLf & "Đây là báo cáo tuần đính kèm." & vbCrLf & "Trân trọng,"
        .Attachments.Add "C:\Path\To\Your\Report.xlsx"
        .Display ' Hoặc .Send để gửi trực tiếp
    End With
    
    Set OutMail = Nothing
    Set OutApp = Nothing
    MsgBox "Email báo cáo đã được tạo!", vbInformation
End Sub

Lưu ý: Bạn cần thay đổi đường dẫn file đính kèm, địa chỉ người nhận, CC và tiêu đề email cho phù hợp với nhu cầu của mình. Nếu muốn gửi trực tiếp không cần xem lại, hãy thay .Display bằng .Send.

Cách này thực sự giúp tiết kiệm rất nhiều thời gian và giảm thiểu sai sót do nhập liệu thủ công. Hy vọng chia sẻ này hữu ích cho mọi người!

4

Hay quá bạn ơi! Mình cũng đang đau đầu với việc gửi báo cáo hàng tuần đây. Bạn có thể chia sẻ chi tiết hơn về đoạn code VBA để lấy dữ liệu từ file Excel khác không? Mình đang muốn lấy dữ liệu từ nhiều file nguồn khác nhau để tổng hợp vào một file báo cáo chính.

3

Tuyệt vời bạn ơi! Mình cũng đang tìm cách để "số hóa" mấy cái báo cáo thủ công này. Đoạn code VBA bạn dùng để định dạng báo cáo có gì hay ho không? Mình hay phải căn chỉnh lắm, mà mỗi lần làm lại tốn kha khá thời gian. Có mẹo gì để tự động hóa phần này hiệu quả hơn không?

1

Bạn cần đăng nhập để trả lời chủ đề này.

Đăng nhập Đăng ký