Gửi email tính lương cho từng người

Liên hệ QC

zine

Thành viên mới
Tham gia
21/8/07
Bài viết
27
Được thích
13
Hi các anh chị
Em có bảng tính lương cho tất cả CBCNV trong công ty
Bây giờ em muốn sau khi tính lương, gửi cách tính lương chi tiết của từng người cho người đó qua email.(thông tin lương của người nào, chỉ người đó biết)
Em gửi kèm file, mọi người có cách gì giúp em nhé, đa tạ.
 

File đính kèm

  • Gui email tu dong theo danh sach.xlsx
    13.2 KB · Đọc: 2,820
HLMT cho hỏi
mình đã chạy code ở #27 mọi thứ ok, nhưng nếu người A xuất hiện từ 2 lần trở lên (2 hàng) thì mail sẽ gửi số lượng đúng bằng số lần xuất hiện trong dữ liệu. Vậy có cách nào mà chỉ gửi 1 mail với nội dung gồm tiêu đề và các dòng ở dưới luôn

Mong câu trả lời
 
Upvote 0
HLMT cho hỏi
mình đã chạy code ở #27 mọi thứ ok, nhưng nếu người A xuất hiện từ 2 lần trở lên (2 hàng) thì mail sẽ gửi số lượng đúng bằng số lần xuất hiện trong dữ liệu. Vậy có cách nào mà chỉ gửi 1 mail với nội dung gồm tiêu đề và các dòng ở dưới luôn

Mong câu trả lời
Gửi file của bạn lên xem thử nhé.
 
Upvote 0
Hi các anh chị,
Mình thấy những file gửi mail của các anh, chị ở phía trên đã rất hay rồi, mình áp dụng được rồi. Nhưng mình xin 1 yêu cầu cao hơn không biết các anh, chị giúp được ko?
Vẫn là tự động gửi mail cho từng người với file đính kèm của người đó, nhưng phải có pass tự động đính kèm luôn (mỗi người 1 file với 1 pass khác nhau, chỉ riêng mình và người đó biết, để đảm bảo tính riêng tư, lỡ ai có lấy được file cũng ko mở ra được)
Thanks các anh chị nhiều!
 
Upvote 0
Hi các anh chị,
Mình thấy những file gửi mail của các anh, chị ở phía trên đã rất hay rồi, mình áp dụng được rồi. Nhưng mình xin 1 yêu cầu cao hơn không biết các anh, chị giúp được ko?
Vẫn là tự động gửi mail cho từng người với file đính kèm của người đó, nhưng phải có pass tự động đính kèm luôn (mỗi người 1 file với 1 pass khác nhau, chỉ riêng mình và người đó biết, để đảm bảo tính riêng tư, lỡ ai có lấy được file cũng ko mở ra được)
Thanks các anh chị nhiều!
Bạn chạy code sau nhé

Mã:
Sub SendMail()
    Dim OutlookApp As Object, MailItem As Object, rng As Range, WB As Workbook
    Application.DisplayAlerts = False
    With Sheet1
        For Each rng In .[A2:A100]
            If Len(rng) > 0 Then
                .[A1:A100].AutoFilter Field:=1, Criteria1:=rng
                .[a1].CurrentRegion.Copy
                Workbooks.Add
                Set WB = ActiveWorkbook
                ActiveSheet.Paste
                WB.SaveAs "D:\BangLuong", , rng.Offset(, 5)
                Set OutlookApp = CreateObject("Outlook.Application")
                Set MailItem = OutlookApp.CreateItem(0)
                With MailItem
                   .To = rng.Offset(, 4)
                   .Subject = "Bang luong cua: " & rng.Offset(, 1)
                   .Attachments.Add WB.FullName
                   .HTMLBody = " <B>Xin chao " & rng.Offset(, 1) & "</B>" & _
                                "<BR><BR>Vui long xem file dinh kem<BR>" & _
                                "<BR>Neu co thac mac gi xin phan hoi som" & _
                                "<BR><B>Xin cam on,</B><BR>" & _
                                "<BR><B>HLMT</B>"
                   .Display
                End With
                WB.Close
            End If
        Next
        .ShowAllData
    End With
    Application.DisplayAlerts = True
    Set OutlookApp = Nothing
    Set MailItem = Nothing
   
End Sub
 

File đính kèm

  • GuiMail 1.3.xls
    39.5 KB · Đọc: 209
Upvote 0
Dùng như bạn thì khi gửi đi, email sẽ là trống, ko có dữ liệu. Vì code .CopyPicture đã biến các con số thành hình ảnh và Paste vào trong Outlook mail nên bắt buộc phải .Display thì mới dán dữ liệu được.
Cách này muốn gửi cho 500 người thì màn hình sẽ hiện ra 500 email soạn sẵn và phải bấm nút send trong Outlook 500 lần.
 
Lần chỉnh sửa cuối:
Upvote 0
Dùng như bạn thì khi gửi đi, email sẽ là trống, ko có dữ liệu. Vì code .CopyPicture đã biến các con số thành hình ảnh và Paste vào trong Outlook mail nên bắt buộc phải .Display thì mới dán dữ liệu được.
Cách này muốn gửi cho 500 người thì màn hình sẽ hiện ra 500 email soạn sẵn và phải bấm nút send trong Outlook 500 lần.

Tùy vào yêu cầu của từng người mà ta chọn cách gửi phù hợp. Yêu cầu của bạn không phải là không thực hiện được, bạn chịu khó đọc lại các bài trước đó sẽ có đáp án dành riêng cho bạn.
 
Upvote 0
Tui có file dùng macro gửi email nhưng khi gửi thì 1 số mail có nội dung gửi, 1 số mail không có nội dung gửi. Vậy xin ace trong GPE giải quyết hộ tôi vấn đề này được ko?
 

File đính kèm

  • Test lenh gui email.xlsm
    62.7 KB · Đọc: 12
Upvote 0
Gửi các anh chị

Em có dùng code của anh Hai Lúa Miền Tây và thấy tương đối tốt.

Tuy nhiên khi MS Outlook khởi động, nó xuất hiện thông báo như hình gửi kèm. Vậy có code nào để bỏ qua cảnh báo như vậy không ?

123.jpg
 
Lần chỉnh sửa cuối:
Upvote 0
Gửi các anh chị

Em có dùng code của anh Hai Lúa Miền Tây và thấy tương đối tốt.

Tuy nhiên khi MS Outlook khởi động, nó xuất hiện thông báo như hình gửi kèm. Vậy có code nào để bỏ qua cảnh báo như vậy không ?

View attachment 121975

Cũng giống như Excel, bạn hãy thiết lập trong phần Macro Settings: Enable all macros là được.
 
Upvote 0
Gửi Hai Lua Mien Tay
Anh có thể giúp mình macro trong excel về gửi mail cho nhiêù địa chỉ mail khác nhau và có đính kèm file có nội dung cho từng người (file pdf) file này được để ở ổ D:\Guimail\*.pdf (tên file được đặt theo tên người nhận). Mình đang dùng Outlook 2007 và ecxel 2010
Xin cám ơn Anh.
 
Upvote 0
Em mới lên diễn đàn nhờ các anh, chị chỉ giáo với ạ.

Em đính kèm file excel. Trong đó có 1 số cột em đã ẩn đi. Em muốn gửi cho nhân viên những thông tin hiện như trong bảng excel, em đã thử 1 số code của anh HLMT post lên nhưng không được ạ.

Các anh chị giúp em với.

Em xin chân thành cảm ơn!
 

File đính kèm

  • Tháng 5.xlsx
    50.6 KB · Đọc: 17
Lần chỉnh sửa cuối:
Upvote 0
Em mới lên diễn đàn nhờ các anh, chị chỉ giáo với ạ.

Em đính kèm file excel. Trong đó có 1 số cột em đã ẩn đi. Em muốn gửi cho nhân viên những thông tin hiện như trong bảng excel, em đã thử 1 số code của anh HLMT post lên nhưng không được ạ.

Các anh chị giúp em với.

Em xin chân thành cảm ơn!
cái này bạn dùng merger trong word 2010 rồi sau đó gởi mail là ok mà, trong word 2010 có chức năng gởi mail cho nhiều người
 
Upvote 0
Gởi anh HLMT, anh HLMT có thể xem giúp em mẫu bảng lương này để gửi mail tính lương cho từng nhân viên đc không ạ, vì cột lương bên em khá nhiều, e ko biết phải làm thế nào cả, em có lấy bảng lương mẫu nhưng nó ít quá ko phù hợp với bên em.
anh HLMT có thể giúp em đc không ạ
 

File đính kèm

  • bangluongnv.xlsx
    11.4 KB · Đọc: 19
Upvote 0
em de .Display thì ok còn .Send thì báo lỗi runtime error anh ạ
Thử code này coi có chạy được không
PHP:
Sub MailSending()
Dim data As Range, cll As Range, MailAdd As Range
With Sheets("Mailinfo")
    Set MailAdd = .Range(.[A2], .[A65536].End(3))
End With
Set data = [a1].CurrentRegion
For Each cll In MailAdd
    data.AutoFilter 1, cll
    data.SpecialCells(12).Copy
    With Workbooks.Add
        .ActiveSheet.[a1].PasteSpecial 1
        .SaveAs ThisWorkbook.Path & "\" & cll & ".xlsx"
        .Close
    End With
    data.AutoFilter
    With CreateObject("Outlook.Application")
        .Session.Logon
        With .CreateItem(0)
            .To = cll.Offset(, 2)
            .Subject = "Thong Bao Luong"
            .Body = "Goi Anh(Chi) " & cll.Offset(, 1) & vbNewLine & vbNewLine _
            & "noi dung dong 1" & vbNewLine _
            & "noi dung dong 2" & vbNewLine _
            & "noi dung dong 3" & vbNewLine & vbNewLine _
            & "Tran Trong" & vbNewLine & vbNewLine _
            & "Nguyen Van Teo"
            .Attachments.Add ThisWorkbook.Path & "\" & cll & ".xlsx"
            .Send
      End With
      'SendKeys "%{s}"
    End With
    Kill ThisWorkbook.Path & "\" & cll & ".xlsx"
Next
End Sub
 
Upvote 0
Thử code này coi có chạy được không
PHP:
Sub MailSending()
Dim data As Range, cll As Range, MailAdd As Range
With Sheets("Mailinfo")
    Set MailAdd = .Range(.[A2], .[A65536].End(3))
End With
Set data = [a1].CurrentRegion
For Each cll In MailAdd
    data.AutoFilter 1, cll
    data.SpecialCells(12).Copy
    With Workbooks.Add
        .ActiveSheet.[a1].PasteSpecial 1
        .SaveAs ThisWorkbook.Path & "\" & cll & ".xlsx"
        .Close
    End With
    data.AutoFilter
    With CreateObject("Outlook.Application")
        .Session.Logon
        With .CreateItem(0)
            .To = cll.Offset(, 2)
            .Subject = "Thong Bao Luong"
            .Body = "Goi Anh(Chi) " & cll.Offset(, 1) & vbNewLine & vbNewLine _
            & "noi dung dong 1" & vbNewLine _
            & "noi dung dong 2" & vbNewLine _
            & "noi dung dong 3" & vbNewLine & vbNewLine _
            & "Tran Trong" & vbNewLine & vbNewLine _
            & "Nguyen Van Teo"
            .Attachments.Add ThisWorkbook.Path & "\" & cll & ".xlsx"
            .Send
      End With
      'SendKeys "%{s}"
    End With
    Kill ThisWorkbook.Path & "\" & cll & ".xlsx"
Next
End Sub
em cảm ơn anh. em đã fix dc lỗi đó rồi ạ, chỉ việc thêm dòng .send dưới dòng .display ok rồi ạ
 
Upvote 0
code của em khi copy vào body outlook thì không hiển thị dấu phẩy tách số. vidu: 233,000 thì khi gửi email nó hiện 233000 .Giờ phải sửa ntn ạ

Format lại dòng sau:

Mã:
strRow = strRow & " " & "<td>" & [COLOR=#ff0000]Format([/COLOR]Ash.Cells(Rnum, ir)[COLOR=#ff0000], "#,##0")[/COLOR] & "</td>"
 
Upvote 0
Format lại dòng sau:

Mã:
strRow = strRow & " " & "<td>" & [COLOR=#ff0000]Format([/COLOR]Ash.Cells(Rnum, ir)[COLOR=#ff0000], "#,##0")[/COLOR] & "</td>"
E cảm ơn a nhìu nhìu ạ.
A HLMT fix giúp em
.Subject = "Chi tiet bang luong: " & Ash.Range("B" & Rnum) _ & ""
.Attachments.Add WB.FullName
.HTMLBody = "<B>Dear " & Ash.Range("B" & Rnum) & ",</B><BR>" & _
"Xin vui lChrW$(361)ng xem chi tiet bang luong nhu ben duoi:<BR><BR>" & _
"<table border=1><tr>" & _
strHeader & _
"</tr><tr>" & _
strRow & _
"</tr>" & _
"</table>" & _
"<BR>" & _
"Neu thay co gi thac mac xin vui long phan hoi som.<BR>" & _
"<B>Xin Cam on,</B>" & _
2 dong chi tiet bang luong em gõ tiếng việt nó không hiển thị đúng anh ạ
em không biết mã tiếng việt. anh giúp em với, em cảm ơn anh
 
Upvote 0
Web KT
Back
Top Bottom