Gửi email tính lương cho từng người (1 người xem)

  • Thread starter Thread starter zine
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

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

Anh HLMT ơi, ý của em là muốn tách dữ liệu của từng người rồi đính kèm vào mail hì...có gì anh giúp em nhá !
Chỉnh code trên lại như sau:

Mã:
Private Sub Send_File_Click()
    Dim OutlookApp As Object, MailItem As Object, i As Integer
    Dim FileName As String, WB As Workbook
    Application.DisplayAlerts = False
    With Sheet1
        For i = 1 To Application.WorksheetFunction.CountA(.[A6:A1000])
            .[A5:A1000].AutoFilter Field:=1, Criteria1:=.Cells(i + 5, 1)
            .[A4].CurrentRegion.Copy Sheet2.Range("A3")
            .[A4].CurrentRegion.CopyPicture
            Sheets("Luong").Copy
            Set WB = ActiveWorkbook
            FileName = "BangLuong" '.Cells(i + 5, 1)
            On Error Resume Next
            Kill "D:\" & FileName
            WB.SaveAs FileName:="D:\" & FileName
            Set OutlookApp = CreateObject("Outlook.Application")
            Set MailItem = OutlookApp.CreateItem(0)
            With MailItem
               .To = Sheet1.Cells(i + 5, 2)
               .Subject = "Bang luong cua: " & Sheet1.Cells(i + 5, 1)
               .Attachments.Add WB.FullName
               .HTMLBody = " <B>Dear " & Sheet1.Cells(i + 5, 1) & "</B>" & _
                            "<BR><BR><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
            SendKeys "({DOWN})", True
            SendKeys "({DOWN})", True
            SendKeys "^({v})", True
            WB.ChangeFileAccess Mode:=xlReadOnly
            Kill WB.FullName
            WB.Close SaveChanges:=False
        Next
        .ShowAllData
    End With
    Application.DisplayAlerts = True
    Set OutlookApp = Nothing
    Set MailItem = Nothing
   
End Sub
 

File đính kèm

Upvote 0
Em tính gửi mail (khoảng vài trăm người) mà chỉ gửi 1 lần. Trong Mail nội dung giống nhau nhưng sẽ có đường link tương ứng với từng địa chỉ Email.
Em tính làm bằng file Excel soạn sẵn tên Email và link tương ứng rồi Import vào Contact trong Outlook.
Ví dụ:
Sau khi gửi xong thì mở hộp email (a@gmail.com) với nội dung sau:
Dear a or all
Nội Dung 123
Link: www.a.com/1

Sau khi gửi xong thì mở hộp email (b@gmail.com) với nội dung sau:
Dear b or all
Nội Dung 123
Link: www.b.com/2

......... (vài trăm email)

Vậy em phải làm thế nào vậy ?? Mong các anh chỉ em với.
 
Upvote 0
Em tính gửi mail (khoảng vài trăm người) mà chỉ gửi 1 lần. Trong Mail nội dung giống nhau nhưng sẽ có đường link tương ứng với từng địa chỉ Email.
Em tính làm bằng file Excel soạn sẵn tên Email và link tương ứng rồi Import vào Contact trong Outlook.
Ví dụ:
Sau khi gửi xong thì mở hộp email (a@gmail.com) với nội dung sau:
Dear a or all
Nội Dung 123
Link: www.a.com/1

Sau khi gửi xong thì mở hộp email (b@gmail.com) với nội dung sau:
Dear b or all
Nội Dung 123
Link: www.b.com/2

......... (vài trăm email)

Vậy em phải làm thế nào vậy ?? Mong các anh chỉ em với.

Gửi form và file của bạn lên xem thử nhé.
 
Upvote 0
Tình hình là xếp em cũng đang yêu cầu gửi phiếu lương vào địa chỉ email của từng người, may mà tìm được diễn đàn này mong anh hai lúa miền tây và anh chị giúp đỡ em
Đây là file mẫu phiếu lương của công ty e.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Anh chị giúp em với, mẫu của công ty bên em
View attachment 114829
Xếp đang yêu cầu gửi phiếu lương(pay slip) vào địa chỉ email của từng nhân viên.
Trong sheet pay slip chỉ cần gõ số thứ tự của nhân viên đó thì tự động nhảy các số liệu của nhân viên đó
Anh Hai Lúa Miền Tây ơi giúp em với
 
Upvote 0
Anh chị giúp em với, mẫu của công ty bên em
View attachment 114829
Xếp đang yêu cầu gửi phiếu lương(pay slip) vào địa chỉ email của từng nhân viên.
Trong sheet pay slip chỉ cần gõ số thứ tự của nhân viên đó thì tự động nhảy các số liệu của nhân viên đó
Anh Hai Lúa Miền Tây ơi giúp em với
Không có địa chỉ email nên tôi tạm lấy cell E3 để đưa tạm vào, bạn nên thay thế cho phù hợp nhé.

Mã:
Sub SendMail()
    Dim OutlookApp As Object, MailItem As Object, i As Integer
    Dim FileName As String, WB As Workbook
    Application.DisplayAlerts = False
        For i = 1 To Application.WorksheetFunction.CountA(Sheet1.[A14:A1000])
            With Sheets("pay slip")
                .[A1:E31].CopyPicture
                .[G2] = i
                .Copy
            End With
            Set WB = ActiveWorkbook
            FileName = "BangLuong"
            On Error Resume Next
            Kill "D:\" & FileName
            WB.SaveAs FileName:="D:\" & FileName
            Set OutlookApp = CreateObject("Outlook.Application")
            Set MailItem = OutlookApp.CreateItem(0)
            With MailItem
               .To = Sheet2.[E3]
               .Subject = "Bang luong cua: " & Sheet2.[C3]
               .Attachments.Add WB.FullName
               .HTMLBody = "<B>Xin chao: " & Sheet2.[C3] & "</B>" & _
                           "<BR><BR>Xin vui long kiem tra lai chi tiet bang luong nhu ben duoi: <BR>" & _
                           "<BR><BR><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
            SendKeys "({DOWN})", True
            SendKeys "({DOWN})", True
            SendKeys "({DOWN})", True
            SendKeys "({DOWN})", True
            SendKeys "({DOWN})", True
            SendKeys "^({v})", True
            WB.ChangeFileAccess Mode:=xlReadOnly
            Kill WB.FullName
            WB.Close SaveChanges:=False
        Next
    Application.DisplayAlerts = True
    Set OutlookApp = Nothing
    Set MailItem = Nothing
End Sub
 

File đính kèm

Upvote 0
hay quá, thanks anh nhiều nha

anh cho em hỏi cái này là mình gửi đồng loạt theo số thứ tự, nếu như trong danh sách này có người mình muốn gửi phiếu lương, có người không thì làm thế nào. Em chèn địa chỉ mail bên em vào một số người, anh hướng dẫn giúp em
View attachment pay slip11(mẫu ) .xlsm
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
anh cho em hỏi cái này là mình gửi đồng loạt theo số thứ tự, nếu như trong danh sách này có người mình muốn gửi phiếu lương, có người không thì làm thế nào. Em chèn địa chỉ mail bên em vào một số người, anh hướng dẫn giúp em
View attachment 114999
Bạn chỉnh code lại như sau:

Mã:
Sub SendMail()
    Dim OutlookApp As Object, MailItem As Object, i As Integer
    Dim FileName As String, WB As Workbook
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
        For i = 1 To Application.WorksheetFunction.CountA(Sheet1.[A14:A1000])
            Sheet2.[G2] = i
            If UCase(Sheet2.[J4]) = "YES" Then
                With Sheets("pay slip")
                    .[A1:E31].CopyPicture
                    .Copy
                End With
                Set WB = ActiveWorkbook
                FileName = "BangLuong"
                On Error Resume Next
                Kill "D:\" & FileName
                WB.SaveAs FileName:="D:\" & FileName
                Set OutlookApp = CreateObject("Outlook.Application")
                Set MailItem = OutlookApp.CreateItem(0)
                With MailItem
                   .To = Sheet2.[G4]
                   .Subject = "Bang luong cua: " & Sheet2.[C3]
                   .Attachments.Add WB.FullName
                   .HTMLBody = "<B>Xin chao: " & Sheet2.[C3] & "</B>" & _
                               "<BR><BR>Xin vui long kiem tra lai chi tiet bang luong nhu ben duoi: <BR>" & _
                               "<BR><BR><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
                SendKeys "({DOWN})", True
                SendKeys "({DOWN})", True
                SendKeys "({DOWN})", True
                SendKeys "({DOWN})", True
                SendKeys "({DOWN})", True
                SendKeys "^({v})", True
                WB.ChangeFileAccess Mode:=xlReadOnly
                Kill WB.FullName
                WB.Close SaveChanges:=False
            End If
        Next
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    Set OutlookApp = Nothing
    Set MailItem = Nothing
End Sub
 

File đính kèm

Upvote 0
em chạy file nhưng sao không được anh ah, anh kiểm tra lại giúp em cái,
em gửi lại anh file mẫu công ty em, trong đó em thêm vào địa chỉ email và yêu cầu có cần gửi hay không.
anh xem giúp em cái nha, cám ơn anh nhiều
View attachment pay slip11(mẫu ) (1).xlsx

trong file đầu anh gửi cho em từ số thứ tự thứ 2 nó sẽ gửi lại người thứ nhất, chỉ được người đầu tiên là đúng thôi còn sau là ví dụ người thứ 3 thì phiếu lương dạng html là người thứ 2, 4 thì tên là 3
loi.jpg
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
em chạy file nhưng sao không được anh ah, anh kiểm tra lại giúp em cái,
em gửi lại anh file mẫu công ty em, trong đó em thêm vào địa chỉ email và yêu cầu có cần gửi hay không.
anh xem giúp em cái nha, cám ơn anh nhiều
View attachment 115055

trong file đầu anh gửi cho em từ số thứ tự thứ 2 nó sẽ gửi lại người thứ nhất, chỉ được người đầu tiên là đúng thôi còn sau là ví dụ người thứ 3 thì phiếu lương dạng html là người thứ 2, 4 thì tên là 3
View attachment 115056
Tôi đã thêm yêu cầu của bạn ở bài trước rồi, do bạn điều chỉnh cột điều kiện gửi mail và địa chỉ mail + với không có công thức ở cell G4, J4 ở sheet pay slip...

Mã:
Sub SendMail()
    Dim OutlookApp As Object, MailItem As Object, i As Integer
    Dim FileName As String, WB As Workbook
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
        For i = 1 To Application.WorksheetFunction.CountA(Sheet1.[A14:A1000]) - 2
            Sheet2.[G2] = i
            If UCase(Sheet2.[J4]) = "YES" Then
                With Sheets("pay slip")
                    .[A1:E31].CopyPicture
                    .Copy
                End With
                Set WB = ActiveWorkbook
                FileName = "BangLuong"
                On Error Resume Next
                Kill "D:\" & FileName
                WB.SaveAs FileName:="D:\" & FileName
                Set OutlookApp = CreateObject("Outlook.Application")
                Set MailItem = OutlookApp.CreateItem(0)
                With MailItem
                   .To = Sheet2.[G4]
                   .Subject = "Bang luong cua: " & Sheet2.[C3]
                   .Attachments.Add WB.FullName
                   .HTMLBody = "<B>Xin chao: " & Sheet2.[C3] & "</B>" & _
                               "<BR><BR>Xin vui long kiem tra lai chi tiet bang luong nhu ben duoi: <BR>" & _
                               "<BR><BR><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
                SendKeys "({DOWN})", True
                SendKeys "({DOWN})", True
                SendKeys "({DOWN})", True
                SendKeys "({DOWN})", True
                SendKeys "({DOWN})", True
                SendKeys "^({v})", True
                WB.ChangeFileAccess Mode:=xlReadOnly
                Kill WB.FullName
                WB.Close SaveChanges:=False
            End If
        Next
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    Set OutlookApp = Nothing
    Set MailItem = Nothing
End Sub
 

File đính kèm

Upvote 0
anh Hai Lúa miền tây giúp em với !

Em cũng đang muốn gửi cho mỗi người chi tiết lương của họ vào mail. Nhưng số cột của em lên tới 24. Anh giúp em với.

Với lại có những ô em hide đi thì khi cahỵ code gửi có ảnh hưởng gì không ạ?

Em cảm ơn anh!

link lấy file: https://drive.google.com/file/d/0B2uDHWvRMRVdWkpJNXBkbXNMM2c/edit?usp=sharing
 
Upvote 0
Tôi đã đọc các bài trong Topic này, nhưng do kiến thức A+ nên chưa ngấm được gì nhiều vào trong đầu.
Bây giờ tôi muốn: từ 1 bảng lương Như đính kèm. Trong Sheet Mail có các cột: Danh sách tên nhân viên, email của họ và điều kiện nhận email. khi bấm vào nút gửi email thì "toàn bộ file bảng lương" này được gửi đi đến tất cả nhân viên có tên trong danh sách.
Lưu ý:
Phương án 1 - Khi gửi đi thì đưa ra 1 Box yêu cầu nhập vào đó pass rồi mới cho gửi để tránh sau khi gửi đi đến mọi thành viên, mỗi người lại bấm cho 1 cái thì hơi phiền.
Phương án 2 - Gửi đi nhưng không gửi theo sheet mail
Phương án 3 - Cho phép gửi đi cả sheet Mail nhưng sau khi gửi đi đến các thành viên thì sheet này không có tác dụng gì nữa (như kiểu gãy liên kết)
Bảng lương có thể có nhiều sheet hơn nữa chứ không phải như file đính kèm trên. bảng lương có thể đặt Protection (riêng phần Protec nếu sử lý khó quá thì thôi).
Tôi xin nhờ các A/C chỉ bảo, giúp đỡ. Cảm ơn.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
anh Hai Lúa miền tây giúp em với !

Em cũng đang muốn gửi cho mỗi người chi tiết lương của họ vào mail. Nhưng số cột của em lên tới 24. Anh giúp em với.

Với lại có những ô em hide đi thì khi cahỵ code gửi có ảnh hưởng gì không ạ?

Em cảm ơn anh!

link lấy file: https://drive.google.com/file/d/0B2uDHWvRMRVdWkpJNXBkbXNMM2c/edit?usp=sharing

Bạn chạy code sau coi đúng ý chưa nhé:

Mã:
Sub SendMail()
      Dim OutlookApp As Object, MailItem As Object, i As Integer, rng As Range
    With Sheet1
        For Each rng In .[AN13:AN1000]
            i = i + 13
            If Len(rng) > 0 Then
                .[AN12:AN1000].AutoFilter Field:=40, Criteria1:=rng
                .[A8].CurrentRegion.CopyPicture
                Set OutlookApp = CreateObject("Outlook.Application")
                Set MailItem = OutlookApp.CreateItem(0)
                With MailItem
                   .To = rng
                   .Subject = "Bang luong cua: " & rng.Offset(, -38)
                   .HTMLBody = " <B>Xin chao " & rng.Offset(, -38) & "</B>" & _
                                "<BR><BR><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
                SendKeys "({DOWN})", True
                SendKeys "({DOWN})", True
                SendKeys "^({v})", True
            End If
        Next
        .ShowAllData
    End With
    Set OutlookApp = Nothing
    Set MailItem = Nothing
   
End Sub
 

File đính kèm

Upvote 0
Bạn chạy code sau coi đúng ý chưa nhé:

Mã:
Sub SendMail()
      Dim OutlookApp As Object, MailItem As Object, i As Integer, rng As Range
    With Sheet1
        For Each rng In .[AN13:AN1000]
            i = i + 13
            If Len(rng) > 0 Then
                .[AN12:AN1000].AutoFilter Field:=40, Criteria1:=rng
                .[A8].CurrentRegion.CopyPicture
                Set OutlookApp = CreateObject("Outlook.Application")
                Set MailItem = OutlookApp.CreateItem(0)
                With MailItem
                   .To = rng
                   .Subject = "Bang luong cua: " & rng.Offset(, -38)
                   .HTMLBody = " <B>Xin chao " & rng.Offset(, -38) & "</B>" & _
                                "<BR><BR><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
                SendKeys "({DOWN})", True
                SendKeys "({DOWN})", True
                SendKeys "^({v})", True
            End If
        Next
        .ShowAllData
    End With
    Set OutlookApp = Nothing
    Set MailItem = Nothing
   
End Sub



Hjc Anh Hai Lúa Miền Tây.
+ T1 là mail gửi toàn bộ file cho người đó. Em muốn gửi từng dòng của người đó cho họ thôi ạ.
+ T2 khi gửi mail em phải ấn send hàng loạt mail như thế, có cách nào tự động gửi được không anh mình ko cần ấn send
Giúp em với. Em cảm ơn anh.
 
Upvote 0
Hjc Anh Hai Lúa Miền Tây.
+ T1 là mail gửi toàn bộ file cho người đó. Em muốn gửi từng dòng của người đó cho họ thôi ạ.
+ T2 khi gửi mail em phải ấn send hàng loạt mail như thế, có cách nào tự động gửi được không anh mình ko cần ấn send
Giúp em với. Em cảm ơn anh.
-T1 Bạn có test code trên chưa? Nó sẽ trích lọc dữ liệu của từng người riêng biệt mà.
-T2 Bạn xem bài #4
 
Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn anh Hai Lúa Miền Tây nhìu nhìu lắm. Mọi việc oke rùi anh ạ ^^
 
Lần chỉnh sửa cuối:
Upvote 0
Nhờ anh giúp đỡ.
-Em thì không phải gửi mail bảng tính lương mà là gửi mail báo giá cho khách hàng. Mình có 1 file excel thông tin khách hàng và file word báo giá như mình đính kèm.
-Em mong muốn bấm nút "Gửi mail" Gửi mail với nội dung vd như:
-----Kính gửi Mr or Ms Doremon - Công Ty TNHH ABC (thay đổi thông tin như file excel)
----------Em gửi anh chị báo giá ...
Thân, Phúc
- Đồng thời đính kèm file word báo giá (thay đổi theo thông tin trong file excel)
Mong các anh giúp đỡ, em cám ơn nhiều
 

File đính kèm

Upvote 0
Mình có 1 vấn đề như trong file. Lần trước nhìn thấy trên diễn đàn có 1 Anh đã post lên gần giống như vậy nhưng bây giờ tìm mãi không thấy. A/C nào biết chỗ, làm ơn chỉ giùm đường dẫn. Cảm ơn.
 

File đính kèm

Upvote 0
Anh HLMT ơi, anh có thể chỉnh giúp em font của đoạn HTML nó không bị nhoè không ạ.chứ gửi outlook nó cứ bị nhoè như thế này anh ahfont chu.jpg

Mọi người ai biết về HTML giúp đỡ mình cái nhé. Đây là file mà anh HLMT đã viết cho mình.
View attachment pay slip11(mẫu ) .xlsm
 
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
 
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

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

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

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

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
E cảm ơn a nhìu nhìu ạ.
A HLMT fix giúp em

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

Bạn xem như sau nhé

Mã:
.HTMLBody = "<B>Xin cha" & ChrW(768) & "o " & Ash.Range("B" & Rnum) & ",</B><BR>" & _
                           "Xin vui lo" & ChrW(768) & "ng xem chi tiê" & ChrW(769) & "t ba" & ChrW(777) & "ng l" & ChrW(432) & ChrW(417) & "ng nh" & ChrW(432) & " bên d" & ChrW(432) & ChrW(417) & ChrW(769) & "i:<BR><BR>" & _
                                "<table border=1><tr>" & _
                                strHeader & _
                                "</tr><tr>" & _
                                strRow & _
                                "</tr>" & _
                                "</table>" & _
                                "<BR>" & _
                            "Nê" & ChrW(769) & "u thâ" & ChrW(769) & "y co" & ChrW(769) & " gi" & ChrW(768) & " th" & ChrW(259) & ChrW(769) & "c m" & ChrW(259) & ChrW(769) & "c xin vui lo" & ChrW(768) & "ng pha" & ChrW(777) & "n hô" & ChrW(768) & "i s" & ChrW(417) & ChrW(769) & "m.<BR>" & _
                            "<B>Xin ca" & ChrW(777) & "m " & ChrW(417) & "n,</B>" & _
                            "<BR>"
 
Upvote 0
Bạn xem như sau nhé

Mã:
.HTMLBody = "<B>Xin cha" & ChrW(768) & "o " & Ash.Range("B" & Rnum) & ",</B><BR>" & _
                           "Xin vui lo" & ChrW(768) & "ng xem chi tiê" & ChrW(769) & "t ba" & ChrW(777) & "ng l" & ChrW(432) & ChrW(417) & "ng nh" & ChrW(432) & " bên d" & ChrW(432) & ChrW(417) & ChrW(769) & "i:<BR><BR>" & _
                                "<table border=1><tr>" & _
                                strHeader & _
                                "</tr><tr>" & _
                                strRow & _
                                "</tr>" & _
                                "</table>" & _
                                "<BR>" & _
                            "Nê" & ChrW(769) & "u thâ" & ChrW(769) & "y co" & ChrW(769) & " gi" & ChrW(768) & " th" & ChrW(259) & ChrW(769) & "c m" & ChrW(259) & ChrW(769) & "c xin vui lo" & ChrW(768) & "ng pha" & ChrW(777) & "n hô" & ChrW(768) & "i s" & ChrW(417) & ChrW(769) & "m.<BR>" & _
                            "<B>Xin ca" & ChrW(777) & "m " & ChrW(417) & "n,</B>" & _
                            "<BR>"
ANH HLMT ơi, anh xem giúp em với
em muốn hiển thị header của dòng 1 và 2 sau đó mới tham chiếu dòng nhân viên thì phải lam tn ạ?
[TABLE="class: outer_border, width: 500"]
[TR]
[TD]luong lam them gio[/TD]
[/TR]
[/TABLE]
[TABLE="class: grid, width: 500"]
[TR]
[TD]chiu thue[/TD]
[TD]khong chiu thue[/TD]
[/TR]
[TR]
[TD]1231[/TD]
[TD]21313[/TD]
[/TR]
[/TABLE]

em muốn cố định hiển thị 2 hàng như thế này ạ.
Bt là đang hiện thị hàng 1, hang 2 trở đi là danh sanh va luong cua nhân viên
giờ em muốn hang 3 trở đi mới là danh sách nhân viên ạ
 
Upvote 0
ANH HLMT ơi, anh xem giúp em với
em muốn hiển thị header của dòng 1 và 2 sau đó mới tham chiếu dòng nhân viên thì phải lam tn ạ?
em muốn cố định hiển thị 2 hàng như thế này ạ.
Bt là đang hiện thị hàng 1, hang 2 trở đi là danh sanh va luong cua nhân viên
giờ em muốn hang 3 trở đi mới là danh sách nhân viên ạ
Bạn gửi file hướng dẫn kết quả lên xem thử nhé.
 
Upvote 0
Bác Hai Lúa Miền Tây và các bác khác giúp em file này với:

Em có nhu cầu gửi đến từng người trong file mỗi người 1 email có đính kèm thông báo lương.

- Cột em muốn lấy từ A1 đến AB, sau này có thể mở rộng thêm, em lấy từ A1 vì em muốn có hàng chữ Thông báo lương tháng xxx trong file đính kèm gửi đi
- Format trong file đính kèm gửi đi em muốn giữ nguyên như trong file tính lương, vì bên em không cho thay đổi.
- Địa chi mail tương ứng của mỗi người em để cột cuối cùng.
- Còn cái khác như Filter các bác thấy không cần có thể bỏ luôn cũng được.
 

File đính kèm

Upvote 0
Dạ em mới tham gia lĩnh vực tiền lương nên còn gà mờ lắm. Cả nhà cho em hỏi, nếu em muốn sử dụng địa chỉ mail khác để gởi bảng lương, không phải outlook thì có phải em phải sửa lại dòng code sau không ạ?

Set OutlookApp = CreateObject("Outlook.Application")
Set MailItem = OutlookApp.CreateItem(0)

Nếu em muốn gởi bằng địa chỉ Gmail thì phải làm sao ạ?

Cảm ơn rất nhiều
 
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

Em cũng có thắc mắc giống bạn này.

Set FilterRange = Ash.Range("A1:H" & Ash.Rows.Count)
FieldNum = 1

Em nghĩ đoạn code này làm được việc filter này nhưng mà e không biết đưa nó vào đâu hết, chắc là do em chưa hiểu được cấu trúc làm việc của nó là như thế nào.

Mọi người giúp e xem file với nhé!
Thanks!
 

File đính kèm

Upvote 0
e đang muốn gửi mail với nội dung như file word, còn dữ liệu trong file excel.
E muốn lọc theo tên công ty và gửi mail cho họ (địa chỉ email ở Sheet 2) với nội dung mail có bảng dữ liệu và thông tin highlight.
Mọi người giúp em với!
 

File đính kèm

Upvote 0
Kính gửi anh Hai Lúa Miền Tây và các anh chị,

Em đã chạy file của anh Hai Lúa Miền Tây nhưng trong máy của em khong có Outlook, em đang sử dụng Windows Mail. Em nhờ anh Hai Lúa Miền Tây và các anh chị chỉ giúp xem có thể sử dụng được Windows Mail thay vì Outlook có được không ạ?

Em xin cám ơn!
 
Upvote 0
Kính gửi anh Hai Lúa Miền Tây và các anh chị,

Em đã chạy file của anh Hai Lúa Miền Tây nhưng trong máy của em khong có Outlook, em đang sử dụng Windows Mail. Em nhờ anh Hai Lúa Miền Tây và các anh chị chỉ giúp xem có thể sử dụng được Windows Mail thay vì Outlook có được không ạ?

Em xin cám ơn!

Bạn phải dùng Outlook nhé, code trên chỉ dùng cho outlook.
 
Upvote 0
e đang muốn gửi mail với nội dung như file word, còn dữ liệu trong file excel.
E muốn lọc theo tên công ty và gửi mail cho họ (địa chỉ email ở Sheet 2) với nội dung mail có bảng dữ liệu và thông tin highlight.
Mọi người giúp em với!

Bạn chạy code bên dưới nhé, lưu ý là phần email và tên công ty phải là duy nhất.

Mã:
Sub SendMail()
    Dim OutlookApp As Object, MailItem As Object, rng As Range
    Application.DisplayAlerts = False
    With Sheet1
        For Each rng In .[K2:K10]
            If Len(rng) > 0 Then
                .[A1:B100].AutoFilter Field:=1, Criteria1:=rng
               .[A1].CurrentRegion.CopyPicture
                Set OutlookApp = CreateObject("Outlook.Application")
                Set MailItem = OutlookApp.CreateItem(0)
                With MailItem
                   .To = rng.Offset(, 1)
                   .Subject = ChrW(272) & ChrW(7873) & " ngh" & ChrW(7883) & " g" & ChrW(7917) & "i thông tin cho tàu ch" & ChrW(7841) & _
                                    "y ngày : " & Sheet1.[E2] & " : th" & ChrW(7901) & "i h" & ChrW(7841) & "n g" & ChrW(7917) & "i: " & Sheet1.[F2]
                   .HTMLBody = " <B>Xin chao " & rng & "</B>" & _
                                "<BR>" & ChrW(272) & ChrW(7873) & " ngh" & ChrW(7883) & " g" & ChrW(7917) & "i thông tin cho tàu ch" & ChrW(7841) & _
                                          "y ngày : " & Sheet1.[E2] & " : th" & ChrW(7901) & "i h" & ChrW(7841) & "n g" & ChrW(7917) & "i: " & Sheet1.[F2] & " v" & ChrW(7899) & _
                                          "i thông tin chi ti" & ChrW(7871) & "t nh" & ChrW(432) & " sau:<BR>" & _
                                 "<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
                SendKeys "({DOWN})", True
                SendKeys "({DOWN})", True
                SendKeys "({DOWN})", True
                SendKeys "^({v})", True
            End If
        Next
        .ShowAllData
    End With
    Application.DisplayAlerts = True
    Set OutlookApp = Nothing
    Set MailItem = Nothing
   
End Sub
 

File đính kèm

Upvote 0
Em cảm ơn anh Hai Lúa Miền Tây về file gửi thông tin lương qua e-mail rất hữu ích và sự nhiệt tình hướng dẫn mọi người của anh!
 
Upvote 0
Bạn chạy code bên dưới nhé, lưu ý là phần email và tên công ty phải là duy nhất.

Mã:
Sub SendMail()
    Dim OutlookApp As Object, MailItem As Object, rng As Range
    Application.DisplayAlerts = False
    With Sheet1
        For Each rng In .[K2:K10]
            If Len(rng) > 0 Then
                .[A1:B100].AutoFilter Field:=1, Criteria1:=rng
               .[A1].CurrentRegion.CopyPicture
                Set OutlookApp = CreateObject("Outlook.Application")
                Set MailItem = OutlookApp.CreateItem(0)
                With MailItem
                   .To = rng.Offset(, 1)
                   .Subject = ChrW(272) & ChrW(7873) & " ngh" & ChrW(7883) & " g" & ChrW(7917) & "i thông tin cho tàu ch" & ChrW(7841) & _
                                    "y ngày : " & Sheet1.[E2] & " : th" & ChrW(7901) & "i h" & ChrW(7841) & "n g" & ChrW(7917) & "i: " & Sheet1.[F2]
                   .HTMLBody = " <B>Xin chao " & rng & "</B>" & _
                                "<BR>" & ChrW(272) & ChrW(7873) & " ngh" & ChrW(7883) & " g" & ChrW(7917) & "i thông tin cho tàu ch" & ChrW(7841) & _
                                          "y ngày : " & Sheet1.[E2] & " : th" & ChrW(7901) & "i h" & ChrW(7841) & "n g" & ChrW(7917) & "i: " & Sheet1.[F2] & " v" & ChrW(7899) & _
                                          "i thông tin chi ti" & ChrW(7871) & "t nh" & ChrW(432) & " sau:<BR>" & _
                                 "<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
                SendKeys "({DOWN})", True
                SendKeys "({DOWN})", True
                SendKeys "({DOWN})", True
                SendKeys "^({v})", True
            End If
        Next
        .ShowAllData
    End With
    Application.DisplayAlerts = True
    Set OutlookApp = Nothing
    Set MailItem = Nothing
   
End Sub

a HLMT ơi, e chạy macro thi phần lọc thông tin cột bkg chưa đúg, cty A ko lọc được ra 3 bkg khác nhau,còn phần công ty C lại ra 3 bkg giống nhau, a xem lại giùm em với!
 
Upvote 0
Upvote 0
Nhờ anh Hai Lúa Miền Tây và các anh chị giúp em làm thế nào để sau khi gửi e-mail đính kèm bảng lương cho mọi người thì máy tự động xóa e-mail đã gửi trong Send Items và Delete Items.
Em cám ơn!
 
Upvote 0
Dear cả nhà mình

Mình có 1 file đặt phòng khách sạn nhưng khi gửi thì mail k hiện chữ ký mình đã set.
Vì thế mình tìm được đoạn code để có thể hiện được cả chữ ký nhưng mình k biết phải kết hợp 2 code này như thế nào.
Ngoài ra mình muốn chuyển font chữ thành Times New Roman nhưng cũng chưa biết phải làm thế nào.
Nhờ mọi người giúp mình nhé.
Cảm ơn cả nhà nhiều
Đoạn code mình tìm đc đây à:
Sub Mail_Outlook_With_Signature_Html_1()
' Working in Office 2000-2013
Dim OutApp As Object
Dim OutMail As Object
Dim strbody As String

Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)

strbody = "p style='font-family:calibri;font-size:16.5'" & "Dear " & Range("D74") & "," (HTML tags not included)

On Error Resume Next

With OutMail
.Display
.To = Range("H74")
.CC = ""
.BCC = ""
.Subject = ""
.HTMLBody = strbody & .HTMLBody
.Display
End With

On Error GoTo 0
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
 

File đính kèm

Upvote 0
tôi thấy chữ ký bình thường mà, font thì phải chỉnh trong outlook thôi.
 
Upvote 0
Phần chỉnh font mình làm được rồi. Còn phần chữ ký đó là mình tạo sẵn trong code bạn ah. Nếu không tạo sẵn trong code thì khi gửi mail sẽ không có phần chữ ký. Vì vậy mình tìm được đoạn code trên để khi nào gửi mail là nó tự động lấy chữ ký mà đã tạo sẵn ở outlook rồi ý
 
Upvote 0
Code không chạy khi chuyển từ Office 2007 sang Office 2010

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
Gửi anh Hai Lúa Miền Tây,
Em đã chạy code này trong Office 2007 rất ok rồi. Nhưng sau đó em chuyển sang Office 2010 thì code bị lỗi. Cứ đến dòng WB.SaveAs "D:\BangLuong", , rng.Offset(, 5) thì treo. Em gửi file kèm theo anh xem giúp em nhé. Cảm ơn anh rất nhiều.
 

File đính kèm

Upvote 0
Gửi anh Hai Lúa Miền Tây,
Em đã chạy code này trong Office 2007 rất ok rồi. Nhưng sau đó em chuyển sang Office 2010 thì code bị lỗi. Cứ đến dòng WB.SaveAs "D:\BangLuong", , rng.Offset(, 5) thì treo. Em gửi file kèm theo anh xem giúp em nhé. Cảm ơn anh rất nhiều.

Tôi đang dùng Office 2010 và đã test ok, bạn kiểm tra lại hộp mail A.nguyen@yahoo.com sẽ thấy có kết quả tôi gửi vào đó.
 
Upvote 0
Lạ nhỉ. Em ktra lại thì thấy nó không mở được Outlook. LIệu Outlook 2010 có ảnh hưởng gì ko anh nhỉ?
 
Upvote 0
Lạ nhỉ. Em ktra lại thì thấy nó không mở được Outlook. LIệu Outlook 2010 có ảnh hưởng gì ko anh nhỉ?

Có thể do Outlook 2010 của bạn bị vấn đề, bạn thử mở Outlook 2010 của bạn lên thử coi có bị lỗi gì không nhé.
 
Upvote 0
Mình chọn display thì có email dạng HTML. Còn khi chọn là Send thì nó không dán tem lương vào outlook mà chị add file mà thôi. Anh Hai Lua Mien Tay xem dùm em voi.
 
Upvote 0
Có thể do Outlook 2010 của bạn bị vấn đề, bạn thử mở Outlook 2010 của bạn lên thử coi có bị lỗi gì không nhé.

Thưa các anh chị,
em có vấn đề này mong các anh chị giúp đỡ em với ạ.

Em có làm 1 file để gửi cho một số địa chỉ email, theo các cách anh chị hướng dẫn ở trên thì em làm cũng gần hoàn thành rồi.
Tuy nhiên còn một chút khó khăn đó là ô "%" không thể hiện được giá trị theo như bảng tính mà thể hiện ở dạng làm tròn, vd 1 hoặc 2...
Em hi vọng các anh/ chị có thể giúp em giải quyết vấn đề này được ko ạ?
Em xin chân thành cảm ơn

P/s : pass của file là : 123 ạ
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Thưa các anh chị,
em có vấn đề này mong các anh chị giúp đỡ em với ạ.

Em có làm 1 file để gửi cho một số địa chỉ email, theo các cách anh chị hướng dẫn ở trên thì em làm cũng gần hoàn thành rồi.
Tuy nhiên còn một chút khó khăn đó là ô "%" không thể hiện được giá trị theo như bảng tính mà thể hiện ở dạng làm tròn, vd 1 hoặc 2...
Em hi vọng các anh/ chị có thể giúp em giải quyết vấn đề này được ko ạ?
Em xin chân thành cảm ơn
Gửi lên nhờ mọi người giúp thì bạn gỗ pass 123 ra nhé. cho mọi người dễ xem
 
Upvote 0
Dear all,

Hiện em đang muốn gửi bảng lương tới nhân viên theo form của bản doc nhưng dữ liệu của em lại ở hàng ngang như excel, em đã thử các code được share trên topic nhưng hiện đều không chạy được, có cái hàng ngang thì em điền for cho chạy từ 1 đến 25 xong run thì nó ko phản hồi gì lại, có lúc có phản hồi thì chỉ hiện câu thông báo cuối cùng, không hiện email có nội dung. Thử dùng code cho hiện thỉ nội dung mail hàng dọc thì nó lại không đủ dòng để em có thể dùng, phiền mọi người hỗ trợ em với ạ, lần đầu em mò VBA T_T
 

File đính kèm

Upvote 0
Dear all,

Hiện em đang muốn gửi bảng lương tới nhân viên theo form của bản doc nhưng dữ liệu của em lại ở hàng ngang như excel, em đã thử các code được share trên topic nhưng hiện đều không chạy được, có cái hàng ngang thì em điền for cho chạy từ 1 đến 25 xong run thì nó ko phản hồi gì lại, có lúc có phản hồi thì chỉ hiện câu thông báo cuối cùng, không hiện email có nội dung. Thử dùng code cho hiện thỉ nội dung mail hàng dọc thì nó lại không đủ dòng để em có thể dùng, phiền mọi người hỗ trợ em với ạ, lần đầu em mò VBA T_T

hix các bác giúp em với T_T
 
Upvote 0
Dear all,

Hiện em đang muốn gửi bảng lương tới nhân viên theo form của bản doc nhưng dữ liệu của em lại ở hàng ngang như excel, em đã thử các code được share trên topic nhưng hiện đều không chạy được, có cái hàng ngang thì em điền for cho chạy từ 1 đến 25 xong run thì nó ko phản hồi gì lại, có lúc có phản hồi thì chỉ hiện câu thông báo cuối cùng, không hiện email có nội dung. Thử dùng code cho hiện thỉ nội dung mail hàng dọc thì nó lại không đủ dòng để em có thể dùng, phiền mọi người hỗ trợ em với ạ, lần đầu em mò VBA T_T

Sao không gởi bảng lương bằng file excel luôn cho gọn
 

File đính kèm

Upvote 0
Cho em hỏi, hiện tại em gởi file lương ngay trong mail, nếu muốn attach theo dạng file PDF đính kèm trong mail thì phải làm sao ạ?

Code của em như sau:

Sub SendMail()
Dim OutlookApp As Object, MailItem As Object, i As Integer
Dim FileName As String, WB As Workbook
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For i = 1 To Application.WorksheetFunction.CountA(Sheet5.[A14:A1000])
Sheet3.[G2] = i
If UCase(Sheet3.[J4]) = "YES" Then
With Sheets("Pay-slip")
.[A1:E55].CopyPicture
.Copy
End With
Set WB = ActiveWorkbook
FileName = "BangLuong"
On Error Resume Next
Kill "D:\" & FileName
WB.SaveAs FileName:="D:\" & FileName
Set OutlookApp = CreateObject("Outlook.Application")
Set MailItem = OutlookApp.CreateItem(0)
With MailItem
.To = Sheet3.[G4]
.Subject = "November 2014 Pay Slip _ (Ms/Mr) " & Sheet3.[C7]

.HTMLBody = "<B>Dear (Ms/Mr)" & Sheet3.[C7] & "</B>" & _
"<BR><BR>Following November Pay Slip for your reference <BR>" & _
"<BR><BR><BR><BR>Should you have any concern, kindly contact me or HR Manager" & _
"<BR>Thanks and best regards,<BR>" & _
"<BR><B>Human Resources Department</B>"
.Display
End With
SendKeys "({DOWN})", True
SendKeys "({DOWN})", True
SendKeys "({DOWN})", True
SendKeys "({DOWN})", True
SendKeys "({DOWN})", True
SendKeys "^({v})", True
WB.ChangeFileAccess Mode:=xlReadOnly
Kill WB.FullName
WB.Close SaveChanges:=False
End If
Next
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Set OutlookApp = Nothing
Set MailItem = Nothing
End Sub
 
Upvote 0
Sao không gởi bảng lương bằng file excel luôn cho gọn
Cám ơn bạn, mình đã thử nhưng do số lượng dòng hiển thị bên mình khá nhiều nên mình không viết hết bằng code, được, hôm trước có tìm hiểu thì do code bị giới hạn số dòng, vì thế mình muốn tìm cách chuyển sang bảng xem có thể cắt đôi nội dung phân phần thành 4 cột (bao gồm 2 cột tiêu đề và 2 cột nội dung ko, bạn xem có cách nào giúp mình với nhé
 
Upvote 0
hiện em đã thử nghiệm và gần hoàn chỉnh được, nhưng code chỉ chạy khi không có số liệu, khi em điền số liệu và mở rộng khoảng lọc thì chạy lại code, ko báo lỗi nhưng cũng ko trả về kết quả, có bác nào tiện xem giúp em với ạ!!!
 

File đính kèm

Upvote 0
Xin nhờ giúp đỡ đoạn code gửi mail

Dear các bậc tiền bối,

Em mới chân ướt chân ráo vào học làm Bảng lương nên rất mong được cả nhà giúp đỡ. Tình hình là em có tham khảo từ các bài viết trước thì có áp dụng được một trường hợp giống như nguyện vọng của em. Đó là gửi email với Bảng lương là một vùng dữ liệu (A1:F30) và đoạn code em áp dụng như sau:

Sub SendMail()
Dim OutlookApp As Object, MailItem As Object, i As Integer
Dim FileName As String, WB As Workbook
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For i = 1 To Application.WorksheetFunction.CountA(Sheet3.[A7:A1000]) - 2
Sheet4.[F3] = i
If UCase(Sheet4.[F2]) = "Yes" Then
With Sheets("Payslip")
.[A1:F30].CopyPicture
.Copy
End With
Set WB = ActiveWorkbook
FileName = "Payslip for employee"
On Error Resume Next
Kill "D:\" & FileName
WB.SaveAs FileName:="D:\" & FileName
Set OutlookApp = CreateObject("Outlook.Application")
Set MailItem = OutlookApp.CreateItem(0)
With MailItem
.To = Sheet4.[F4]
.Subject = "Payslip_" & Sheet4.[C6]
.Attachments.Add WB.FullName
.HTMLBody = "<B>Dear" & Sheet4.[C6] & "</B>" & _
"<BR><BR>Please see the attached file of your payslip this month <BR>" & _
"<BR><BR><BR><BR>If any concern, please contact HR dept." & _
"<BR><B>Thanks & Best Regard,</B><BR>" & _
"<BR><B>HLMT</B>"
.Display
End With
SendKeys "({DOWN})", True
SendKeys "({DOWN})", True
SendKeys "({DOWN})", True
SendKeys "({DOWN})", True
SendKeys "({DOWN})", True
SendKeys "^({v})", True
WB.ChangeFileAccess Mode:=xlReadOnly
Kill WB.FullName
WB.Close SaveChanges:=False
End If
Next
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Set OutlookApp = Nothing
Set MailItem = Nothing
End Sub


Đây là đoạn mã em copy và có chỉnh sửa chút xíu cho phù hợp với Bảng của mình, sau đó em cũng tạo macro và gán cho "Sendmail" như trong file đính kèm ah (em cũng chưa được rành về Macro nên không biết có mắc lỗi gì nữa không ah).

Em mong các tiền bối giúp em giải quyết vấn đề nan giải đã lấy đi biết bao nhiêu nơ ron thần kinh của em ah. Em có thêm 01 nguyện vọng nữa là làm thế nào để gửi trực tiếp vùng dữ liệu của Payslip lên email thay cho gửi file ah.
Rất mong sớm nhận được hồi âm của cả nhà ah.
Chúc cả nhà buổi tối Chủ Nhật ấm áp yêu thương. ^.^
 

File đính kèm

Upvote 0
Bạn xem file đính kèm nhé.

Hi anh. Theo file anh gửi thì em chỉ cần sữa địa chỉ mail ở sheet mailinfo thôi ah, còn chi tiết lương em chỉ cần sữa lại theo bảng lương của cty em thôi ah anh? sao em thử sữa địa chỉ mail ở sheet mailinfo cho 3 người ( 1 là em, 2 người kia làm cùng ) mà sao chỉ hiển thị dạng tin nhắn cho em. Nó không đưa vào địa chỉ mail của em hay gì hết. Và 2 người kia thì hoàn toàn không nhận được. Em không biết cách sử dụng file này như thế nào và có cần cài thêm chương trình gì không ah?
 
Upvote 0
Anh ơi cho em hỏi, em muốn tự động đính kèm chữ ký đã được tạo sẵn trên Outlook thì làm thế nào ạ. Chữ ký đó bao gồm cả logo, hình ảnh màu ... ạ.
 
Upvote 0
Em hiểu cái chữ ký rồi ạ, anh cho em hỏi thêm 2 ý nữa ạ:
1) Em muốn copy phần nội dung từ 1 email có sẵn ra nhiều email thì làm thế nào ạ? Em thấy nếu viết code cả phần nội dung trong VBA thì tương đối vất vả với những nội dung dài, vì em muốn viết tiếng Việt có dấu và có nhiều căn chỉnh, định dạng ạ.
2) Em để .Display để xem nội dung trước khi Send. Sau khi xem và chỉnh sửa phần nội dung xong, muốn Send tự động tất cả các Email đang mở thì làm thế nào ạ?
 
Upvote 0
Chào anh chi.
Em viết code dựa theo mẫu sau:
Mã:
Sub Send_Row_Or_Rows_1()
'For Tips see: http://www.rondebruin.nl/win/winmail/Outlook/tips.htm
'Don't forget to copy the function RangetoHTML in the module.
'Working in Excel 2000-2013
    Dim OutApp As Object
    Dim OutMail As Object
    Dim rng As Range
    Dim Ash As Worksheet
    Dim Cws As Worksheet
    Dim Rcount As Long
    Dim Rnum As Long
    Dim FilterRange As Range
    Dim FieldNum As Integer
    Dim mailAddress As String

    On Error GoTo cleanup
    Set OutApp = CreateObject("Outlook.Application")

    With Application
        .EnableEvents = False
        .ScreenUpdating = False
    End With

    'Set filter sheet, you can also use Sheets("MySheet")
    Set Ash = ActiveSheet

    'Set filter range and filter column (Column with names)
    Set FilterRange = Ash.Range("A1:H" & Ash.Rows.Count)
    FieldNum = 1    'Filter column = A because the filter range start in A

    'Add a worksheet for the unique list and copy the unique list in A1
    Set Cws = Worksheets.Add
    FilterRange.Columns(FieldNum).AdvancedFilter _
            Action:=xlFilterCopy, _
            CopyToRange:=Cws.Range("A1"), _
            CriteriaRange:="", Unique:=True

    'Count of the unique values + the header cell
    Rcount = Application.WorksheetFunction.CountA(Cws.Columns(1))

    'If there are unique values start the loop
    If Rcount >= 2 Then
        For Rnum = 2 To Rcount

            'Filter the FilterRange on the FieldNum column
            FilterRange.AutoFilter Field:=FieldNum, _
                                   Criteria1:=Cws.Cells(Rnum, 1).Value

            'Look for the mail address in the MailInfo worksheet
            mailAddress = ""
            On Error Resume Next
            mailAddress = Application.WorksheetFunction. _
                          VLookup(Cws.Cells(Rnum, 1).Value, _
                                Worksheets("Mailinfo").Range("A1:B" & _
                                Worksheets("Mailinfo").Rows.Count), 2, False)
            On Error GoTo 0

            If mailAddress <> "" Then
                With Ash.AutoFilter.Range
                    On Error Resume Next
                    Set rng = .SpecialCells(xlCellTypeVisible)
                    On Error GoTo 0
                End With

                Set OutMail = OutApp.CreateItem(0)

                On Error Resume Next
                With OutMail
                    .to = mailAddress
                    .Subject = "Test mail"
                    .HTMLBody = RangetoHTML(rng)
                    .Display  'Or use Send
                End With
                On Error GoTo 0

                Set OutMail = Nothing
            End If

            'Close AutoFilter
            Ash.AutoFilterMode = False

        Next Rnum
    End If

cleanup:
    Set OutApp = Nothing
    Application.DisplayAlerts = False
    Cws.Delete
    Application.DisplayAlerts = True

    With Application
        .EnableEvents = True
        .ScreenUpdating = True
    End With
End Sub

Cái này nó có filter ở cột A, tức là ở cột A trùng tên thì nó gửi nhiều dòng vào cùng 1 mail. Có cách nào để nó không filter không ạ.
 
Upvote 0
anh vui lòng cho em hỏi là vào đâu để chèn cái code ở trên kia ạ?
cảm ơn anh nhiều!
 
Upvote 0
nhìn cái hàm này mà thấy nó phức tạp quá để mình thử xem nào
 
Upvote 0
chúc anh em of Giaiphapexcel luôn mạnh khỏe, thành công và hạnh phúc
 
Lần chỉnh sửa cuối:
Upvote 0
Trong sheet "Mailinfo" mình có để cột C, bạn muốn gởi mail tới người nào thì đặt địa chỉ mail người đó vào tương ứng, chú ý phải mở Outlook lên trước khi gởi mail nha.

Mình gởi lại file vì có người chạy bị lỗi vì 1 biến chưa khai báo.

chào.

Bác Thnghiachau ơi trước hết em rất cảm ơn file Play Roll -... của bác nó rất ngon bổ và lại free nữa. nhưng em có 1 mong muốn là: các số khi ở trong bảng Excel thì có dấu phân cách hàng đơn vị nhưng khi gửi vào mail thì không còn nữa điều này làm người nhận lương không rễ nhìn cho lắm. Vậy nếu có thể bác nghiên cứu thêm xem có cách ghì khắc phục không giúp em với.
Đầu xuân năm mới chúc bác và gia đình, chúc anh em of Giaiphapexcel luôn mạnh khỏe, thành công và hạnh phúc
 
Upvote 0
Sub SendMail()
Dim OutApp As Object
Dim OutMail As Object
Dim cell As Range
Dim Addresslist As Scripting.Dictionary
Application.ScreenUpdating = False
Set Addresslist = New Scripting.Dictionary
Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon

For Each cell In Columns("B").Cells.SpecialCells(xlCellTypeConstants)
If cell.Value Like "?*@?*.?*" And _
LCase(Cells(cell.Row, "J").Value) = "yes" Then
On Error Resume Next
Addresslist.Add cell.Value, cell.Value
If Err.Number = 0 Then
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = cell.Value
.Subject = "Phieu luong: " & Cells(cell.Row, "A").Value
.Body = "Dear " & Cells(cell.Row, "A").Value _
& vbNewLine & vbNewLine & _
"Xin vui long xem chi tiet bang luong nhu ben duoi:" & _
vbNewLine & vbNewLine & _
"+ He So Chuc Danh: " & Cells(cell.Row, "C").Value & _
vbNewLine & _
"+ So ngay cong: " & Cells(cell.Row, "D").Value & _
vbNewLine & _
"+ Luong CD: " & Cells(cell.Row, "E").Value & _
vbNewLine & _
"+ Phu cap DT: " & Cells(cell.Row, "F").Value & _
vbNewLine & _
"+ Phu cap doan the: " & Cells(cell.Row, "G").Value & _
vbNewLine & _
"+ Tru BHXH, BHYT: " & Cells(cell.Row, "H").Value & _
vbNewLine & _
"+ Luong CK: " & Cells(cell.Row, "I").Value & _
vbNewLine & vbNewLine & _
"Cam on"
.Display 'Or use Send
End With
Set OutMail = Nothing
End If
On Error GoTo 0
End If
Next cell

Set OutApp = Nothing
Set Addresslist = Nothing
Application.ScreenUpdating = True
End Sub

Ai giúp em giải thích code này với :D Em gửi thử toàn báo lỗi 404 - you don't connected!
 
Upvote 0
Gửi Bác Hai Lúa Miền Tây và các thành viên của diễn đàn

Nhờ các bác làm cái file gửi tự đông theo trường hợp này với, theo bảng Exel đính kèm

- lọc các dòng, cột theo Mã CN(cột B tại sheet File tổng) bao gồm cả tiêu đề và phần ghi chú ở cuối bảng VD nếu Có 2 mã CN trùng nhau thì lấy cả 2 mã
- Mỗi một mã CN (cột B) (gồm tất cả các dòng có mã CN giống nhau) thì Attact thành 1 file excel
- Tự động gửi mail tới các địa chỉ email tương ứng với Mã CN đó (được nêu tại Sheet1)
- Phần subject thì lấy tại dòng E4 (sheet 1)
- Phần nội dung lấy tại E5 (sheet1)

Các Bác giúp e với nhé, ko tuần nào em cũng dùng tay mà lên tới khoảng 400 Đại lý của Cty --> die khẩn cấp +-+-+-+
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Cả nhà ơi em ko biết làm mã code cả nhà làm ơn làm hộ em cái gửi lương theo biểu phiếu lương kia của em có được không ạ ! em cảm ơn cả nhà
 
Lần chỉnh sửa cuối:
Upvote 0
Anh chị giúp em với, mẫu của công ty bên em
Xếp đang yêu cầu gửi đề nghị chi hộ đến npp theo 2 địa chỉ email.
Trong sheet "chi hộ" chỉ cần gõ số thứ tự của npp đó thì tự động nhảy các số liệu của npp
Anh Hai Lúa Miền Tây ơi giúp em với
 

File đính kèm

Upvote 0
Cám ơn bạn đã up code rất giá trị.
làm phiền bạn cho tôi hỏi: tôi muốn copy 2 dòng tiêu đề thì làm sao hả bạn. (Mong bạn giúp đỡ)
 
Upvote 0
các bạn code hay quá. Có thể nào chỉ mình cụ thể không. Mình không rành lắm . Nhưng mà rất cần. Mong các anh chị giúp đỡ. Bước đầu tiên là làm như thế nào . Rùi nó ra được file excel như z.
Thanks all
 
Upvote 0
Ko contact được với bác Hai Lúa Miền Tây :(
 
Upvote 0
Mình muốn copy bảng trong excel paste vào phần nội dung mail thì làm sao nhỉ? Mình record macro thì ko được.
 
Upvote 0
Upvote 0
Tôi nhớ đã có làm rồi trong những bài trước trong đề tài này, bạn chịu khó tìm lại giúp nhé.
Cảm ơn thầy, đã tìm được nhưng em chưa hiểu phần này
Mã:
 With MailItem                   
                   ...
                   .HTMLBody = " <B>Xin chao " & rng & "</B>" & _
                                "<BR>" & ChrW(272) & ChrW(7873) & " ngh" & ChrW(7883) & " g" & ChrW(7917) & "i thông tin cho tàu ch" & ChrW(7841) & _
                                          "y ngày : " & Sheet1.[E2] & " : th" & ChrW(7901) & "i h" & ChrW(7841) & "n g" & ChrW(7917) & "i: " & Sheet1.[F2] & " v" & ChrW(7899) & _
                                          "i thông tin chi ti" & ChrW(7871) & "t nh" & ChrW(432) & " sau:<BR>" & _
                                 "<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
Cho em hỏi câu lệnh nào đưa phần khung bảng vào?
 
Upvote 0
Cảm ơn thầy, đã tìm được nhưng em chưa hiểu phần này
Mã:
 With MailItem                   
                   ...
                   .HTMLBody = " <B>Xin chao " & rng & "</B>" & _
                                "<BR>" & ChrW(272) & ChrW(7873) & " ngh" & ChrW(7883) & " g" & ChrW(7917) & "i thông tin cho tàu ch" & ChrW(7841) & _
                                          "y ngày : " & Sheet1.[E2] & " : th" & ChrW(7901) & "i h" & ChrW(7841) & "n g" & ChrW(7917) & "i: " & Sheet1.[F2] & " v" & ChrW(7899) & _
                                          "i thông tin chi ti" & ChrW(7871) & "t nh" & ChrW(432) & " sau:<BR>" & _
                                 "<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
Cho em hỏi câu lệnh nào đưa phần khung bảng vào?
Bạn vào trang http://www.giaiphapexcel.com/forum/...-trợ-nhập-tiếng-việt-(Font-Unicode)-trong-VBA để tìm hiểu về hàm chuyển đổi font.
Về khung đưa vào trong trình soạn thảo email, bạn cố tìm trong đề tài này nhé. Nó sẽ có cái cho bạn cần.
 
Upvote 0
Vậy nếu gửi mail mà có kèm file thì làm thế nào hả anh?
 
Upvote 0
Có cách nào gởi mail mà tạo thêm cc cho nhiều người nữa không nhỉ? Anh có thể tạo ra giúp em được ko
 
Upvote 0
Anh chị cho mình hỏi trường hợp sau

Em thấy code của bác HaiLua #124 Trang 13

Sub SendMail() Dim OutlookApp As Object, MailItem As Object, rng As Range, WB As Workbook
Application.DisplayAlerts = False
With Sheet1
For Each rng In .[A1: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 "C:\BangLuong", , rng.Offset(, 10)
Set OutlookApp = CreateObject("Outlook.Application")
Set MailItem = OutlookApp.CreateItem(0)
With MailItem
.To = rng.Offset(, 4)
.Subject = "Bang luong cua: " & rng.Offset(, 4)
.Attachments.Add WB.FullName
.HTMLBody = " <B>Xin chao " & rng.Offset(, 5) & "</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>"
.Send
End With
WB.Close
End If
Next
.ShowAllData
End With
Application.DisplayAlerts = True
Set OutlookApp = Nothing
Set MailItem = Nothing

End Sub

E đã làm thành công nhưng cho em hỏi muốn khi gửi đi sẽ có thêm 1 sheet là định dạng phiếu lương, dùng sẵn hàm vlookup bên sheet2 qua sheet1 để ra dữ liệu. Vì nhiều khi nhân viên muốn in ra theo định dạng.
Anh chị xem giúp
 
Lần chỉnh sửa cuối:
Upvote 0

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

Back
Top Bottom