Cách gửi lương cho nhân viên !

Liên hệ QC

doanhoanghai

Thành viên hoạt động
Tham gia
20/12/07
Bài viết
195
Được thích
4
Mình xin cảm ơn ! @$@!^%
 
Lần chỉnh sửa cuối:
Không biết phải làm sao bây giờ ! mình phải gửi cho 70 nhân viên mà mỗi tuần mình gửi 1 lần , 1 tháng 4 lần mà gửi thủ công chắc chết mất thôi !

Huuuuuuuuuu Giúp mình với !
 
Mình có một vấn đề như sau :
mình có 1 file tính lương cho nhân viên trong công ty nhưng mình không muốn mọi người trong công ty biết lương của nhau bằng cách chỉ gửi cho mỗi người phần lương của họ thôi
mà không biết cách sử lý thế nào cả mong mọi người giúp đỡ !
Không biết phải làm sao bây giờ ! mình phải gửi cho 70 nhân viên mà mỗi tuần mình gửi 1 lần , 1 tháng 4 lần mà gửi thủ công chắc chết mất thôi !
Gởi lại file đi bạn, danh sach chừng 30 "em", hoặc nếu chỉ 70 sao không gởi luôn lên, muốn thể hiện từng "em" như thế nào (thể hiện những cột nào trong ví dụ )phải nói chứ, ai biết bạn ngứa chỗ nào mà gãi.
Còn nếu mình không muốn mọi người trong công ty biết lương của nhau thì khi phát lương bạn "phang" thêm một câu " đừng nói cho ai biết số tiền bạn lãnh nhé"

 
bạn có thể dùng số cmnd của từng nhân viên để làm mật khẩu cho từng nhân viên
trong bảng tính cần có thêm cột yêu cầu nhập mật khẩu
khi nhân viên nhập dungd mật khẩu thì công thức sẽ tự tính lương của nhân viên đó thôi
 
File gốc đây ! các bạn xem giúp mình với nhé !
 
Bạn dùng code sau để gửi mail qua Windows mail nhé:

Mã:
Option Explicit
Sub SendMail()
    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
    Dim NewWB As Workbook
    Dim TempFilePath As String
    Dim TempFileName As String
    Dim FileExtStr As String
    Dim FileFormatNum As Long
    On Error GoTo cleanup
    With Application
        .EnableEvents = False
        .ScreenUpdating = False
    End With
    Set Ash = ActiveSheet
    
    Set FilterRange = Ash.Range("A4:G" & Ash.Rows.Count)
    FieldNum = 1
    '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
            '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
                'Filter the FilterRange on the FieldNum column
                FilterRange.AutoFilter Field:=FieldNum, _
                                       Criteria1:=Cws.Cells(Rnum, 1).Value
                'Copy the visible data in a new workbook
                With Ash.AutoFilter.Range
                    On Error Resume Next
                    Set rng = .SpecialCells(xlCellTypeVisible)
                    On Error GoTo 0
                End With
                Set NewWB = Workbooks.Add(xlWBATWorksheet)
                rng.Copy
                With NewWB.Sheets(1)
                    .Cells(1).PasteSpecial Paste:=8
                    .Cells(1).PasteSpecial Paste:=xlPasteValues
                    .Cells(1).PasteSpecial Paste:=xlPasteFormats
                    .Cells(1).Select
                    Application.CutCopyMode = False
                End With
                'Create a file name
                TempFilePath = Environ$("temp") & "\"
                TempFileName = "Duoc copy tu file " & Ash.Parent.Name _
                             & " " & Format(Now, "dd-mmm-yy h-mm-ss")
                If Val(Application.Version) < 12 Then
                    'You use Excel 2000-2003
                    FileExtStr = ".xls": FileFormatNum = -4143
                Else
                    'You use Excel 2007
                    FileExtStr = ".xlsx": FileFormatNum = 51
                End If
                'Save, Mail, Close and Delete the file
                With NewWB
                    .SaveAs TempFilePath & TempFileName _
                          & FileExtStr, FileFormat:=FileFormatNum
                    On Error Resume Next
                    .SendMail mailAddress, _
                              "Bang luong"
                    On Error GoTo 0
                    .Close SaveChanges:=False
                End With
                Kill TempFilePath & TempFileName & FileExtStr
            End If
            'Close AutoFilter
            Ash.AutoFilterMode = False
        Next Rnum
    End If
cleanup:
    Application.DisplayAlerts = False
    Cws.Delete
    Application.DisplayAlerts = True
    With Application
        .EnableEvents = True
        .ScreenUpdating = True
    End With
End Sub

Bạn xem thêm file nhe.
 

File đính kèm

Mình ấn vào sent treo máy lun a` !!! máy mình chắc bị virus rồi hay sao ấy ! file excel nào cũng phải tầm 4,5M à không biết làm thế nào cho nó nhỏ lại ! bạn xem file mình gửi nha
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom