Giúp hoàn thiện code gửi email với nhiều file đính kèm.

Liên hệ QC

tieutuvodanh192

Thành viên thường trực
Tham gia
25/3/19
Bài viết
289
Được thích
321
Chào các ACE Group GPE,

Em có tập tành viết 1 code gửi email đơn giản như ở file đính kèm.
Nhu cầu của em muốn gửi email tới nhiều người và nhiều loại file đính kèm khác nhau, có người em sẽ gửi 3-5 tệp đính kèm, có người thì chỉ có 1, thậm chí là 0.
File của em hiện tại không thể chạy hàng loạt như vậy được, khi chỗ đường dẫn file bị trống thì code ko chạy được.
Bên cạnh đó loay hoay mãi em cũng chưa tìm được cách chèn chữ ký mặc định của out look vào body mail.
Nhờ các ACE xem và hoàn thiện file giúp em. Rất mong nhận được sự giúp đỡ. :))
 

File đính kèm

  • Gui Email.xlsm
    21.9 KB · Đọc: 63
So sánh code cũ và mới để biết những chỗ được thêm, sửa.
Mã:
Sub Guiemail()

Dim olApp As Outlook.Application
Set olApp = CreateObject("Outlook.Application")

Dim i, so_nguoi_nhan_email As Integer, c As Long, filename As String, signature As String
so_nguoi_nhan_email = Excel.WorksheetFunction.CountA(ThisWorkbook.Sheets(1).Range("B:B"))

For i = 2 To so_nguoi_nhan_email

    Dim olMail As Outlook.MailItem
    Set olMail = olApp.CreateItem(olMailItem)
    
    signature = olMail.HTMLBody
    
    olMail.To = ThisWorkbook.Sheets(1).Cells(i, 2)
    olMail.CC = ThisWorkbook.Sheets(1).Cells(i, 3)
    olMail.Subject = ThisWorkbook.Sheets(1).Cells(i, 4)
    
    olMail.HTMLBody = ThisWorkbook.Sheets(1).Cells(i, 5) & signature
    For c = 1 To 5  ' thay 5 bằng số tập tin lớn nhất cần đính kèm.
        filename = ThisWorkbook.Sheets(1).Cells(i, 5 + c)
        If Len(filename) Then olMail.Attachments.Add ThisWorkbook.Path & "\File\" & filename
    Next c
    olMail.Send

Next
End Sub
 
Upvote 0
So sánh code cũ và mới để biết những chỗ được thêm, sửa.
Mã:
Sub Guiemail()

Dim olApp As Outlook.Application
Set olApp = CreateObject("Outlook.Application")

Dim i, so_nguoi_nhan_email As Integer, c As Long, filename As String, signature As String
so_nguoi_nhan_email = Excel.WorksheetFunction.CountA(ThisWorkbook.Sheets(1).Range("B:B"))

For i = 2 To so_nguoi_nhan_email

    Dim olMail As Outlook.MailItem
    Set olMail = olApp.CreateItem(olMailItem)
  
    signature = olMail.HTMLBody
  
    olMail.To = ThisWorkbook.Sheets(1).Cells(i, 2)
    olMail.CC = ThisWorkbook.Sheets(1).Cells(i, 3)
    olMail.Subject = ThisWorkbook.Sheets(1).Cells(i, 4)
  
    olMail.HTMLBody = ThisWorkbook.Sheets(1).Cells(i, 5) & signature
    For c = 1 To 5  ' thay 5 bằng số tập tin lớn nhất cần đính kèm.
        filename = ThisWorkbook.Sheets(1).Cells(i, 5 + c)
        If Len(filename) Then olMail.Attachments.Add ThisWorkbook.Path & "\File\" & filename
    Next c
    olMail.Send

Next
End Sub
Cảm ơn anh rất nhiều!
Em đã test thử và không còn gặp vấn đề về Attach File, tuy nhiên email send out vẫn chưa có signature.
Không biết đang có thiếu sót chỗ nào, code cũng không thấy báo lỗi, chạy thử 1 code gửi email dạng khác thì vẫn có signature nên chắc out look không vấn đề gì, nhờ anh xem giúp em với nhé. :)
 
Upvote 0
Cảm ơn anh rất nhiều!
Em đã test thử và không còn gặp vấn đề về Attach File, tuy nhiên email send out vẫn chưa có signature.
Không biết đang có thiếu sót chỗ nào, code cũng không thấy báo lỗi, chạy thử 1 code gửi email dạng khác thì vẫn có signature nên chắc out look không vấn đề gì, nhờ anh xem giúp em với nhé. :)
̀Thôi chết rồi, nhìn lại thấy thiếu (tôi viết trong notepad, không cài outlook).
Trước dòng signature = olMail.HTMLBody thì thêm olMail.Display
 
Upvote 0
Chào các ACE Group GPE,

Em có tập tành viết 1 code gửi email đơn giản như ở file đính kèm.
Nhu cầu của em muốn gửi email tới nhiều người và nhiều loại file đính kèm khác nhau, có người em sẽ gửi 3-5 tệp đính kèm, có người thì chỉ có 1, thậm chí là 0.
File của em hiện tại không thể chạy hàng loạt như vậy được, khi chỗ đường dẫn file bị trống thì code ko chạy được.
Bên cạnh đó loay hoay mãi em cũng chưa tìm được cách chèn chữ ký mặc định của out look vào body mail.
Nhờ các ACE xem và hoàn thiện file giúp em. Rất mong nhận được sự giúp đỡ. :))
Bạn ơi cho mình hỏi nếu dùng file này mà đổi file đính kèm thì mình làm thế nào vậy nhỉ?
 
Upvote 0
Cho mình hỏi đoạn này sửa như thế nào ạ
File này mình tập viết code lâu rồi nên cái bản hoàn thiện sau cùng mình tìm không thấy nữa.
Mình lấy lại đoạn code của chú Batman1 ở trên để chỉnh lại, bạn tham khảo nha:

Mã:
Sub Guiemail()

Dim olApp As Outlook.Application
Set olApp = CreateObject("Outlook.Application")

Dim i, so_nguoi_nhan_email As Integer, c As Long, filename As String, signature As String
so_nguoi_nhan_email = Excel.WorksheetFunction.CountA(ThisWorkbook.Sheets(1).Range("B:B"))

For i = 2 To so_nguoi_nhan_email

    Dim olMail As Outlook.MailItem
    Set olMail = olApp.CreateItem(olMailItem)
   
    olMail.Display
    signature = olMail.HTMLBody
   
    olMail.To = ThisWorkbook.Sheets(1).Cells(i, 2)
    olMail.CC = ThisWorkbook.Sheets(1).Cells(i, 3)
    olMail.Subject = ThisWorkbook.Sheets(1).Cells(i, 4)
   
    olMail.HTMLBody = ThisWorkbook.Sheets(1).Cells(i, 5) & signature
    For c = 1 To 5  ' thay 5 ba`ng sô´ tâ?p tin lo´n nhâ´t câ`n di´nh ke`m.
        filename = ThisWorkbook.Sheets(1).Cells(i, 5 + c)
        If Len(filename) Then olMail.Attachments.Add ThisWorkbook.Path & "\File\" & filename
    Next c
    olMail.Display 'neu muon gui email luon thi thay Display bang Send

Next
End Sub
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom