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,821
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ạ.

Bạn sử dụng code sau thử nhé

Mã:
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

http://www.rondebruin.nl/mail/folder3/message.htm

Tham khảo thêm file nhé.
 

File đính kèm

  • guimail.xls
    31.5 KB · Đọc: 4,022
Upvote 0
Cảm ơn anh domfootwear
Theo fiel anh gửi, Khi nhấn nút gửi, macro chạy ra các mail để gửi, mình ấn nút send thì sẽ gửi mail cho từng người.
Cho em hỏi thêm là, có thể sửa đoạn mã trên, để khi nhấn nút gửi (chạy macro), nó tự động gửi luôn mà không hiện ra Email khởi tạo nữa. (Vì danh sách dài, nếu để hiện ra các cửa sổ pop up thì quá nhiều cửa sổ)
 
Upvote 0
Cảm ơn anh domfootwear
Theo fiel anh gửi, Khi nhấn nút gửi, macro chạy ra các mail để gửi, mình ấn nút send thì sẽ gửi mail cho từng người.
Cho em hỏi thêm là, có thể sửa đoạn mã trên, để khi nhấn nút gửi (chạy macro), nó tự động gửi luôn mà không hiện ra Email khởi tạo nữa. (Vì danh sách dài, nếu để hiện ra các cửa sổ pop up thì quá nhiều cửa sổ)

Bạn thử sửa như sau

Mã:
.Display

Thành

Mã:
.Send
 
Upvote 0
Thanks bác, tìm mãi không dc, hoá ra là chỗ Display
 
Upvote 0
Em đã gửi bảng lương dc rùi, nhưng còn ba vấn đề chưa giải quyết được:
- Khi muốn gửi chi tiết các khoản mục (BHXH, số ngày công tính lương, ngày công thực tế ...) khoảng 11 chỉ tiêu, thì đoạn code trên bị báo lỗi là "Too many line continuations...". HÌnh như là do nhièu dòng
quá (tổng cộng không một đoạn code không dc quá 25 dòng). Có cách nào khắc phục không ạ
- Không gõ được tiếng Việt với Body của mail (không gõ được trong vba)
- Vì email gửi dưới dạng Texl nên nhìn không dc pro, có cách nào tạo ra email dạng bảng (table)không ạ? (Ví dụ: Bảng có 4 cột và các hàng: Cột gồm: cột 1 là số thứ tự, cột 2 là nội dung, cột 3 là giá trị, cột 4 là đơn vị tính. Hàng gồm các nội dung chính : Hàng 1: Lương ngày, Hàng 2: Thuế, Hàng 3: Bảo hiểm ....
 
Lần chỉnh sửa cuối:
Upvote 0
Mình có xem đoạn code này để thực hiên, nhưng nó báo lỗi,
Quote:
Code:
Mã:
Sub Send_Row_Or_Rows_1() 
' Don't forget to copy the function RangetoHTML in the module. ' Working in Office 2000-2010     
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. _ 
                      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
Nguồn:http://www.rondebruin.nl/mail/folder3/row2.htm


Cao thủ nào chỉ giúp em sửa lỗi đoạn mã với. Không biết đoạn mã trên có đúng là gửi email cho từng người theo bảng không

Hic, làm sao để đoạn code hiển thị rõ ràng, không bị dàn trải, như bác domfootwear thể hiện nhỉ
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Bạn xem file đính kèm nhé.
 

File đính kèm

  • Copy of guimail.xls
    48 KB · Đọc: 2,042
Upvote 0
Em thấy cái này rất hay quá, tuy nhiên do thông tin về lương bên em quá nhiều mà file này ít thông tin quá nên không thể hiện hết được ( khoản tầm 20 thông tin). Các anh có cách nào không thì hướng dẫn giúp em với.
Trân trọng và cảm ơn
 
Upvote 0
Em cũng đang cần gửi mail cho từng người phiếu lương chi tiết, nhưng em ko hiểu cách hướng dẫn trên là dùng cho mail nào? em chưa thử làm, bác nào cho em xin số điện thoại giúp em với a, hoặc alo giúp em tới số: 0916.075.605 a
 
Lần chỉnh sửa cuối:
Upvote 0
Em cũng đang cần gửi mail cho từng người phiếu lương chi tiết, nhưng em ko hiểu cách hướng dẫn trên là dùng cho mail nào? em chưa thử làm, nếu bác nào có số cố định mà đang ở hà nội thì cho em xin để em hỏi chút a

Bạn dùng Outlook, tải file hướng dẫn ở trên, nhớ là theo trình tự cột nhé.
 
Upvote 0
Cho em hỏi mình muốn nó gửi theo ngày giờ và tự động như vậy có được không ạ. Thanks !!!
 
Upvote 0
mình có bảng tính excel, mình muốn nó tự động copy bản đó, xong chạy outlook, paste bảng đó vào body thì làm sao, mong các bạn chị giúp.

cảm ơn nhiều
 
Upvote 0
Các bác ơ giúp mình với, Mình thấy file trên hay quá, mình cũng dow về dùng nhưng sao khi nhấn nút send nó cửa hiện của sổ gửi Email của Ms Word không hà, không có nút send (gửi), mình đang xài win 7, dùng trình mail Windows live mail

Giup minh voi,
Cam on cac cao thủ nhiều lắm

Các anh chị giúp mình thì vui lòng gửi qua Email giup minh nhe: namnhoai@yahoo.com
 
Upvote 0
Ôi, giờ mới đọc được topic này. Theo mình nghĩ thì nó sẽ rất hữu ích với công việc văn phòng và giao tiếp.

Nhưng tiếc là mình không rành lắm về VBA (không biết có lớp nào dạy cái này không nhể?). Và hơn thế nữa, mong mọi người bàn thảo nhiều hơn nữa chủ đề này để mình học hỏi.
 
Upvote 0
Bạn ơi, thanks bạn rất nhiều về file gởi email này
Nhưng khi mình trích xuất dạng bảng ra thì nó các cột trong bảng thể hiện thiếu giá trị trong ô excel tương ứng
VD ô của mình có text là : 12345678
Trước khi bấm nút "gửi mail" thì mình có kéo ô đó nhỏ lại cho dễ hiển thị, nên nó chỉ hiển thị : 12345 (thực chất giá trị vẫn là 123456)
Khi email xuất ra thì ô tương ứng chỉ thể hiện đúng màn hình excel thể hiện là 12345 , chứ không phải là 12345678

Bạn hướng dẫn mình sửa code với
 
Upvote 0
Bạn ơi, thanks bạn rất nhiều về file gởi email này
Nhưng khi mình trích xuất dạng bảng ra thì nó các cột trong bảng thể hiện thiếu giá trị trong ô excel tương ứng
VD ô của mình có text là : 12345678
Trước khi bấm nút "gửi mail" thì mình có kéo ô đó nhỏ lại cho dễ hiển thị, nên nó chỉ hiển thị : 12345 (thực chất giá trị vẫn là 123456)
Khi email xuất ra thì ô tương ứng chỉ thể hiện đúng màn hình excel thể hiện là 12345 , chứ không phải là 12345678

Bạn hướng dẫn mình sửa code với
Bạn thử file ở file đính kèm nhé.
 

File đính kèm

  • guimail.xls
    47.5 KB · Đọc: 612
Upvote 0
Bạn ơi, bạn dùng Shrink to fit trong excel để dữ liệu tự thu nhỏ trong 1 ô phải không ?
Nhưng không được bạn ơi, ghi xuất email gởi, nó vẫn mất dữ liệu chứ không tự thu nhỏ vào trong 1 ô như excel
 
Upvote 0
Bạn ơi, bạn dùng Shrink to fit trong excel để dữ liệu tự thu nhỏ trong 1 ô phải không ?
Nhưng không được bạn ơi, ghi xuất email gởi, nó vẫn mất dữ liệu chứ không tự thu nhỏ vào trong 1 ô như excel

Khi mình xuất ra nó sẽ tự bun ra mà bạn. Nếu chưa chỉnh về Shrink to fit thì nó sẽ bị che mất.

[video=youtube;3QP9aMoFkuc]http://www.youtube.com/watch?v=3QP9aMoFkuc&amp;feature=youtu.be[/video]
 
Lần chỉnh sửa cuối:
Upvote 0
Cám ơn sự nhiệt tình của bạn rất nhiều. Còn up clip cho mình xem nữa. Thật chân thành cám ơn bạn
Nhưng trong cái clip, bạn ơi, rõ ràng là lúc bạn xuất email, nó bị mất dữ liệu kìa, bạn nhìn kỹ ô chứa Tên trong email xem, còn có "Lê Phát" àh, thiếu "Đởm"
Bạn khắc phục giúp mình với
 
Upvote 0
Web KT

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

Back
Top Bottom