Help! Gửi danh sách mail+file đính kèm trong Excel(Outlook)

Nơi trao đổi về VBA (Visual Basic for Application), lập trình cho ứng dụng Microsoft Office, AutoCAD...

Moderator: tungblt

Post Reply
ninjatcb
Thành viên chính thức
Thành viên chính thức
Posts: 14
Joined: Sat 25/04/2009 10:47 pm

Help! Gửi danh sách mail+file đính kèm trong Excel(Outlook)

Post by ninjatcb »

Mình hằng ngày phải gửi 1 số lượng mail rất nhiều qua Outlook. Mỗi mail đó mình phải gửi đính kèm 1 tập tin excel (các tập tin tương ứng với mail gửi đi được để cùng trong 1 thư mục trong ổ C). Công việc lặp đi lặp lại rất vất vả.
- Mình có 1 file excel ghi đầy đủ địa chỉ mail của những người mình muốn gửi theo từng dòng. Tương ứng với từng dòng đó (cột bên cạnh) mình để đường dẫn của file đính kèm
- Mình có các files đính kèm (tương ứng với từng mail) để trong 1 thư mục của ô C (Các file này sẽ được save với tên mặc định để trùng với tên trong danh sách excel)

Mong các bạn giúp mình đoạn code VBA (excel) để chỉ 1 thao tác để có thể thực hiện đồng loạt các thao gửi mail và đính kèm.
Mình xin chân thành cảm ơn vì sự giúp đỡ quý báu của các bạn
Trân trọng!
Last edited by ninjatcb on Wed 04/05/2011 2:44 pm, edited 2 times in total.
ninjatcb
Thành viên chính thức
Thành viên chính thức
Posts: 14
Joined: Sat 25/04/2009 10:47 pm

Re: Nhờ anh chị giúp đỡ VBA

Post by ninjatcb »

Mình đã biết được code gửi mail qua Outlook đồng thời gửi đính kềm file. Mình paste code ở đây để mọi người có thể tham khảo
Sub macro1()

Windows("Book2.xlsm").Activate
Sheets("Sheet1").Select
Dim OutApp As Object
Dim OutMail As Object
Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon
Set OutMail = OutApp.CreateItem(0)
xx = Range("B2").Value
c = Range("C2").Value
On Error Resume Next
With OutMail
.To = "" & xx & ""
.Subject = "Test"
.Body = "Hi. This is a test"
.Attachments.Add ("" & c & "")
.Send
End With
On Error GoTo 0


End Sub

Giải thích : File excel dữ liệu của mình tên là Book2.xlsm . Trong đó:
1. Ghi địa chỉ mail cần gửi theo cột B
2. Ghi đường dẫn file cần gửi theo cột C

Tuy vậy, mình vẫn chưa biết cách để 1 lúc có thể gửi cho nhiều người. Mình nghĩ có thể là vòng lặp nào đó nhưng vì mình không phải là người chuyên về IT nên không rõ lắm. Mong các bạn giúp đỡ mình cách để có thể thực hiện thao tác gửi mail cho nhiều người và đính kèm file tương ứng.
Mình xin chân thành cảm ơn!
ninjatcb
Thành viên chính thức
Thành viên chính thức
Posts: 14
Joined: Sat 25/04/2009 10:47 pm

Re: Nhờ anh chị giúp đỡ VBA

Post by ninjatcb »

Hix. Có ai giúp mình xử lý bài toán này không (mong anh TruongPhu ghe qua :D)
Em xin cảm ơn
ninjatcb
Thành viên chính thức
Thành viên chính thức
Posts: 14
Joined: Sat 25/04/2009 10:47 pm

Re: Nhờ anh chị giúp đỡ VBA

Post by ninjatcb »

Thực ra có thể xử lý bằng cách copy lại các đoạn code và thay đổi giá trị tương ứng. Như vậy cũng giúp giải quyết chỉ mất công lúc làm build code thôi. Tuy vậy, nếu số dòng lên tới cả nghìn thì mình bó tay.
Mong các bạn giúp đỡ
Xin chân thành cảm ơn !
User avatar
thuongbat
Guru
Guru
Posts: 346
Joined: Sun 27/04/2008 10:11 am
Has thanked: 4 times
Been thanked: 79 times

Re: Nhờ anh chị giúp đỡ VBA

Post by thuongbat »

ninjatcb wrote:Mình đã biết được code gửi mail qua Outlook đồng thời gửi đính kềm file. Mình paste code ở đây để mọi người có thể tham khảo
  1. Sub macro1()
  2.  
  3. Windows("Book2.xlsm").Activate
  4. Sheets("Sheet1").Select
  5. Dim OutApp As Object
  6. Dim OutMail As Object
  7. Set OutApp = CreateObject("Outlook.Application")
  8.             OutApp.Session.Logon
  9.             Set OutMail = OutApp.CreateItem(0)
  10.         xx = Range("B2").Value
  11.         c = Range("C2").Value
  12.             On Error Resume Next
  13.             With OutMail
  14.                 .To = "" & xx & ""
  15.                 .Subject = "Test"
  16.                 .Body = "Hi. This is a test"
  17.                 .Attachments.Add ("" & c & "")
  18.                 .Send  
  19.             End With
  20.             On Error GoTo 0
  21. End Sub

Giải thích : File excel dữ liệu của mình tên là Book2.xlsm . Trong đó:
1. Ghi địa chỉ mail cần gửi theo cột B
2. Ghi đường dẫn file cần gửi theo cột C

Tuy vậy, mình vẫn chưa biết cách để 1 lúc có thể gửi cho nhiều người. Mình nghĩ có thể là vòng lặp nào đó nhưng vì mình không phải là người chuyên về IT nên không rõ lắm. Mong các bạn giúp đỡ mình cách để có thể thực hiện thao tác gửi mail cho nhiều người và đính kèm file tương ứng.
Mình xin chân thành cảm ơn!
Chưa test code của bạn, nhưng có thể thêm cái này để tạo vòng lặp gửi cho nhiều người
  1. Windows("Book2.xlsm").Activate
  2. Sheets("Sheet1").Select
  3. Dim OutApp As Object
  4. Dim OutMail As Object
  5. Set OutApp = CreateObject("Outlook.Application")
  6.             OutApp.Session.Logon
  7.             Set OutMail = OutApp.CreateItem(0)
  8. Dim i As Integer
  9. For i = 2 to 1000      'giả sử dữ liệu của bạn nằm từ ô B2 đến ô C1000
  10.        xx = Range("B" & i).Value
  11.         c = Range("C" & i).Value
  12.             On Error Resume Next
  13.             With OutMail
  14.                 .To = "" & xx & ""
  15.                 .Subject = "Test"
  16.                 .Body = "Hi. This is a test"
  17.                 .Attachments.Add ("" & c & "")
  18.                 .Send  
  19.             End With
  20. Next i
  21.             On Error GoTo 0
  22. End Sub
Rượu gặp tri kỷ ngàn chén thiếu.
Chuyện người không hợp nửa câu thừa.
User avatar
truongphu
VIP
VIP
Posts: 4781
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 525 times

Re: Help! Gửi danh sách mail+file đính kèm trong Excel(Outlo

Post by truongphu »

Gởi hàng loạt mail trong outlook với danh sách từ contact thì dùng chức năng mail-Merge trong cửa sổ contact

Gởi hàng loạt mail trong outlook với danh sách từ excel thì dùng word, gọi mail merge và sắp xếp theo hướng dẫn

Đây là công cụ có sẵn của word cũng như outlook, không cần code, chỉ cần thao tác đúng. Hãy thử.
chúc bạn thành công
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh
ninjatcb
Thành viên chính thức
Thành viên chính thức
Posts: 14
Joined: Sat 25/04/2009 10:47 pm

Re: Help! Gửi danh sách mail+file đính kèm trong Excel(Outlo

Post by ninjatcb »

Xin cảm ơn anh Truongphu và bạn thuongbat rất nhiều vì sự giúp đỡ quý báu. Em sẽ thử tìm hiểu thêm mail merge và cũng test thử luôn code của bạn thuongbat. Nếu có gì không hiểu, lại mong anh và bạn giúp đỡ
Trân trọng cảm ơn!
ninjatcb
Thành viên chính thức
Thành viên chính thức
Posts: 14
Joined: Sat 25/04/2009 10:47 pm

Re: Help! Gửi danh sách mail+file đính kèm trong Excel(Outlo

Post by ninjatcb »

Mình thử theo cách vòng lặp của " thuongbat" thì chỉ gửi được 1 mail duy nhất là mail đầu tiên.
Mình thử bỏ hết bẫy lỗi (On Error....) Thì thấy được thông báo sau
Run-time error '-2147221238(8004010a)':
The item has been moved or deleted

Bội vàng tại .to = "" & xx & ""

Giúp mình xử lý với.
Trân thành cảm ơn!
ninjatcb
Thành viên chính thức
Thành viên chính thức
Posts: 14
Joined: Sat 25/04/2009 10:47 pm

Re: Help! Gửi danh sách mail+file đính kèm trong Excel(Outlo

Post by ninjatcb »

HI hi Mình đã hiểu và tìm được cách khắc phục. Chỉ cần chuyển dòng lệnh For i = 2 to 1000 lên trên dòng Set OutApp là xong :D Mình xin chia sẻ

Windows("Book2.xlsm").Activate
Sheets("Sheet1").Select
Dim OutApp As Object
Dim OutMail As Object
Dim i as integer
For i = 2 to 1000 'giả sử dữ liệu của bạn nằm từ ô B2 đến ô C1000
Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon
Set OutMail = OutApp.CreateItem(0)

xx = Range("B" & i).Value
c = Range("C" & i).Value
On Error Resume Next
With OutMail
.To = "" & xx & ""
.Subject = "Test"
.Body = "Hi. This is a test"
.Attachments.Add ("" & c & "")
.Send
End With
Next i
On Error GoTo 0
End Sub
Post Reply

Return to “Visual Basic for Application (VBA)”