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
Upvote 0
Bạn tự dịch mấy dòng tiếng Anh đó là hiểu ngay mà.
Tôi đoán là chương trình out look không cho gửi và bạn phải update chương trình diệt virut!

Người ta đang dùng code để gửi mail mà bạn. Cái người ta hỏi là làm sao tắt cái thông báo ấy khi chạy code gửi mail ấy.
 
Upvote 0
Người ta đang dùng code để gửi mail mà bạn. Cái người ta hỏi là làm sao tắt cái thông báo ấy khi chạy code gửi mail ấy.
Đúng đó các anh chị ah, làm sao để tắt được cái thông báo đó khi gửi mail ấy ạ.
Hôm trước có vọc được code này cũng trên GPE, khi gửi mail thì không bị thông báo như code bên trên:
Mã:
Sub Send_Files()
Dim OutApp As Object
Dim OutMail As Object
Dim sh As Worksheet
Dim cell As Range, FileCell As Range, rng As Range
With Application
    .EnableEvents = False
    .ScreenUpdating = False
End With
Set sh = Sheets("Sheet1")
Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon
For Each cell In sh.Columns("B").Cells.SpecialCells(xlCellTypeConstants)
    'Enter the file names in the C:Z column in each row
    Set rng = sh.Cells(cell.Row, 1).Range("C1:Z1")
    If cell.Value Like "?*@?*.?*" And Application.WorksheetFunction.CountA(rng) > 0 Then
        Set OutMail = OutApp.CreateItem(0)
        With OutMail
            .To = cell.Value
            .Subject = "Dear Mr/Mrs"
            .Body = "Hi " & cell.Offset(0, -1).Value
            For Each FileCell In rng.SpecialCells(xlCellTypeConstants)
                If Trim(FileCell) <> "" Then
                    If Dir(FileCell.Value) <> "" Then
                        .Attachments.Add FileCell.Value
                    End If
                End If
            Next FileCell
            .Send
        End With
        Set OutMail = Nothing
    End If
Next cell
Set OutApp = Nothing
With Application
    .EnableEvents = True
    .ScreenUpdating = True
End With
End Sub

Anh chị xem giúp em nhé.
 
Upvote 0
Đúng đó các anh chị ah, làm sao để tắt được cái thông báo đó khi gửi mail ấy ạ.
Hôm trước có vọc được code này cũng trên GPE, khi gửi mail thì không bị thông báo như code bên trên:
Mã:
Sub Send_Files()
Dim OutApp As Object
Dim OutMail As Object
Dim sh As Worksheet
Dim cell As Range, FileCell As Range, rng As Range
With Application
    .EnableEvents = False
    .ScreenUpdating = False
End With
Set sh = Sheets("Sheet1")
Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon
For Each cell In sh.Columns("B").Cells.SpecialCells(xlCellTypeConstants)
    'Enter the file names in the C:Z column in each row
    Set rng = sh.Cells(cell.Row, 1).Range("C1:Z1")
    If cell.Value Like "?*@?*.?*" And Application.WorksheetFunction.CountA(rng) > 0 Then
        Set OutMail = OutApp.CreateItem(0)
        With OutMail
            .To = cell.Value
            .Subject = "Dear Mr/Mrs"
            .Body = "Hi " & cell.Offset(0, -1).Value
            For Each FileCell In rng.SpecialCells(xlCellTypeConstants)
                If Trim(FileCell) <> "" Then
                    If Dir(FileCell.Value) <> "" Then
                        .Attachments.Add FileCell.Value
                    End If
                End If
            Next FileCell
            .[COLOR=#ff0000]Display[/COLOR]
        End With
        Set OutMail = Nothing
    End If
  [COLOR=#ff0000]SendKeys "%{s}"[/COLOR][COLOR=#ff0000], True[/COLOR]
Next cell
Set OutApp = Nothing
With Application
    .EnableEvents = True
    .ScreenUpdating = True
End With
End Sub

Anh chị xem giúp em nhé.
Thử cái dòng màu đỏ xem sao
 
Lần chỉnh sửa cuối:
Upvote 0
Thử cái dòng màu đỏ xem sao

Em có thử đoạn trên của anh nhưng cái thông báo đó vẫn còn.
Search trên mạng họ có hướng dẫn code như thế này:
Mã:
                 [COLOR=#008000]' Declare Windows' API functions[/COLOR]
                [COLOR=#000080]Private Declare Function[/COLOR] RegisterWindowMessage _
        Lib "user32" Alias "RegisterWindowMessageA" _
        (ByVal lpString As String) As Long
                
                [COLOR=#000080]Private Declare Function[/COLOR] FindWindow Lib "user32" _
        Alias "FindWindowA" (ByVal lpClassName As Any, _
        ByVal lpWindowName As Any) As Long
                
                [COLOR=#000080]Private Declare Function[/COLOR] SendMessage Lib "user32" _
        Alias "SendMessageA" (ByVal hwnd As Long, _
        ByVal wMsg As Long, ByVal wParam As Long, _
        lParam As Any) As Long
                
                [COLOR=#000080]Private Sub[/COLOR] SomeProc()
                [COLOR=#000080]Dim[/COLOR] wnd As Long
                [COLOR=#000080]Dim[/COLOR] uClickYes As Long
                [COLOR=#000080]Dim[/COLOR] Res As Long
                
                [COLOR=#008000]' Register a message to send
                [/COLOR]uClickYes = RegisterWindowMessage("CLICKYES_SUSPEND_RESUME")
                
                [COLOR=#008000]' Find ClickYes Window by classname
                [/COLOR]wnd = FindWindow("EXCLICKYES_WND", 0&)
                
                [COLOR=#008000]' Send the message to Resume ClickYes
                [/COLOR]Res = SendMessage(wnd, uClickYes, 1, 0)
                
                [COLOR=#008000]' ...
                ' Do some Actions
                ' ...
                [/COLOR]
                [COLOR=#008000]' Send the message to Suspend ClickYes
                [/COLOR]Res = SendMessage(wnd, uClickYes, 0, 0)
                
                [COLOR=#000080]End Sub[/COLOR]

Các anh chị tham khảo nhé !
 
Upvote 0
Thông báo đó là do outlook security khi gởi mail hàng loạt bằng vba nhằm tránh spam đó mà . Hôm trước mình viết code gởi mail bảng chi tiết lương hơn 500 nhân viên Outlook cung báo vậy. Có 2 cách khắc phục : nếu bạn rành về hệ thống thì vào Regedit sửa còn không thí có tool để enable một số port trong out look la ok . bạn cần thì mail cho mình khongventoan@gmail.com
 
Upvote 0
Upvote 0
Gửi Hai lua mien Tay,
Cho mình hỏi 1 chút, về file gửi email đến từng người thì có thể sửa lại một số điểm như sau nữa không :
+ Định dạng số liệu hiển thị trên email có dấu , ngăn cách hàng nghìn như định dạng vốn có trong exel.
+ File exel đính kèm email gửi cho mỗi người có thể hiển thị công thức được không ? Vì mọi người rất muốn cách tính toán như thế nào.
+ Số cột hiển thị trên email bằng số cột hiển thị trên file exel( file của bạn làm có 18 cột, nếu xóa đi 1 cột chẳng hạn thì trên email vẫn còn hiện lên cột đó dù ko có dữ liệu; giờ mình muốn ko hiển thị cột đó nữa)
Many thanks !
 

File đính kèm

  • guimail 1.2(1).xls
    56.5 KB · Đọc: 68
Lần chỉnh sửa cuối:
Upvote 0
Gửi Hai lua mien Tay,
Cho mình hỏi 1 chút, về file gửi email đến từng người thì có thể sửa lại một số điểm như sau nữa không :
+ Định dạng số liệu hiển thị trên email có dấu , ngăn cách hàng nghìn như định dạng vốn có trong exel.
+ File exel đính kèm email gửi cho mỗi người có thể hiển thị công thức được không ? Vì mọi người rất muốn cách tính toán như thế nào.
+ Số cột hiển thị trên email bằng số cột hiển thị trên file exel( file của bạn làm có 18 cột, nếu xóa đi 1 cột chẳng hạn thì trên email vẫn còn hiện lên cột đó dù ko có dữ liệu; giờ mình muốn ko hiển thị cột đó nữa)
Many thanks !

Bạn gửi form của bạn lên xem thử nhé.
 
Upvote 0
Mình gửi đây, bạn xem nhé.
Mình có thêm 1 đề xuất nữa là khi nhấn gửi email thì nghĩa là gửi đi luôn mà ko cần nhấn send cho mỗi người nữa
--
Chỗ hiển thị cột thì mình biết cách sửa rồi nhé, sửa 18 thành số cột mong muốn hiển thị là ok
 

File đính kèm

  • guimail 1.2.xls
    47 KB · Đọc: 99
Lần chỉnh sửa cuối:
Upvote 0
Mình gửi đây, bạn xem nhé.
Mình có thêm 1 đề xuất nữa là khi nhấn gửi email thì nghĩa là gửi đi luôn mà ko cần nhấn send cho mỗi người nữa
--
Chỗ hiển thị cột thì mình biết cách sửa rồi nhé, sửa 18 thành số cột mong muốn hiển thị là ok

Bạn đã làm rồi mà, chỉnh gửi luôn thay vì hiển thị thì bạn thay .Display thành .Send là được.
 
Upvote 0
Còn vụ hiển thị số liệu có dấu, ở hàng nghìn và hiện công thức trong file attach nữa; bạn sửa lại giúp mình nhé.
 
Upvote 0
Còn vụ hiển thị số liệu có dấu, ở hàng nghìn và hiện công thức trong file attach nữa; bạn sửa lại giúp mình nhé.
Phần diễn giải công thức, bạn nên thêm vào phần tiêu đề cột cho dể nhìn.

Mã:
Sub GuiMail()
    Dim OutApp As Object, OutMail As Object
    Dim WB As Workbook, Ash As Worksheet, mailAddress As String, i As Integer, ir As Integer
    Dim Rcount As Long, FileName As String, Rnum As Long, strHeader As String, strRow As String
    On Error GoTo cleanup
    Set OutApp = CreateObject("Outlook.Application")
    Set Ash = Sheet1
    Rcount = Application.WorksheetFunction.CountA(Ash.Columns(1))
    For i = 1 To 16
          strHeader = strHeader & " " & "<th>" & Ash.Cells(1, i) & "</th>"
    Next
    If Rcount >= 2 Then
        For Rnum = 2 To Rcount
            strRow = ""
            For ir = 1 To 16
                strRow = strRow & " " & "<td>" & Format(Ash.Cells(Rnum, ir), "#,##0") & "</td>"
                Sheets("Form").Cells(8, ir) = Format(Ash.Cells(Rnum, ir), "#,##0")
            Next
            mailAddress = ""
            On Error Resume Next
            mailAddress = Application.WorksheetFunction. _
                          VLookup(Ash.Cells(Rnum, 1).Value, _
                                Worksheets("Mailinfo").Range("A1:C" & _
                                Worksheets("Mailinfo").Rows.Count), 3, False)
            Sheets("Form").Copy
            Set WB = ActiveWorkbook
            FileName = Ash.Cells(Rnum, 1) & ".xls"
            Kill "d:\" & FileName
            On Error GoTo 0
            WB.SaveAs FileName:="d:\" & FileName
            If mailAddress <> "" Then
                Set OutMail = OutApp.CreateItem(0)
                With OutMail
                    .To = mailAddress
                    .Subject = " Chi ti" & ChrW(7871) & "t thu" & ChrW(7871) & " TNCN T5.2013: " & Ash.Range("B" & Rnum)
                    .Attachments.Add WB.FullName
                    .HTMLBody = "Dear Anh/Ch" & ChrW(7883) & ",</B><BR>" & _
                           "Xin vui lòng xem chi ti" & ChrW(7871) & "t thu" & ChrW(7871) & " TNCN T5.2013 nh" & ChrW(432) & " bên d" & ChrW(432) & ChrW(7899) & "i:<BR><BR>" & _
                                "<table border=1><tr>" & _
                                strHeader & _
                                "</tr><tr>" & _
                                strRow & _
                                "</tr>" & _
                                "</table>" & _
                                "<BR>" & _
                            "N" & ChrW(7871) & "u có gì th" & ChrW(7855) & "c m" & ChrW(7855) & "c xin vui lòng ph" & ChrW(7843) & "n h" & ChrW(7891) & "i s" & ChrW(7899) & "m<BR>" & _
                              "<B>Best regards,</B>" & _
                            "<BR>" & _
                            "<B>ABC<B>" & _
                            "<BR>" & _
                            Ash.Range("O5")
                    .Display  'Or use Send
                End With
                On Error GoTo 0
                Set OutMail = Nothing
            End If
            WB.ChangeFileAccess Mode:=xlReadOnly
            Kill WB.FullName
            WB.Close SaveChanges:=False
        Next Rnum
    End If
    
MsgBox "Da tao xong email gui", vbInformation
'ThisWorkbook.Close (False)
cleanup:
    Set OutApp = Nothing: Set OutMail = Nothing

End Sub

Bạn test thử nhé.
 

File đính kèm

  • Copy of guimail 1.2-1.xls
    61.5 KB · Đọc: 280
Upvote 0
Mình test thì thấy ở file exel vẫn không hiển thị công thức.
Còn dòng "Xin vui lòng xem chi tiết..."
và "Nếu có gì thắc mắc..."
thì bị lỗi font chữ.
Còn số liệu format ở email thì hiển thị đúng theo ý mình rồi.
 
Upvote 0
Mình test thì thấy ở 1./ file exel vẫn không hiển thị công thức.
Còn dòng "Xin vui lòng xem chi tiết..."
và "Nếu có gì thắc mắc..."
thì 2./ bị lỗi font chữ.
Còn số liệu format ở email thì hiển thị đúng theo ý mình rồi.
1./ Bài 54 tôi đã nói "Phần diễn giải công thức, bạn nên thêm vào phần tiêu đề cột cho dể nhìn." và tôi cũng làm form cho bạn xem rồi.
2./ Máy tôi thì test ok.
 
Upvote 0
1.Mình hiểu là ko thể hiện được công thức trên file exel mà chỉ hiện được bằng dòng tiêu đề thôi.
2.Lỗi font thì mình tự sửa được trong code rồi.
Cám ơn bạn nhiều nhé.
 
Upvote 0
1.Mình hiểu là ko thể hiện được công thức trên file exel mà chỉ hiện được bằng dòng tiêu đề thôi.
2.Lỗi font thì mình tự sửa được trong code rồi.
Cám ơn bạn nhiều nhé.
1./ Cũng có thể hiển thị được công thức nhưng nó rất rườm rà, ghi tiêu đề thế là người ta hiểu rồi bạn.
2./ "Người thông minh không chịu học thì có khác gì đất tốt mà không được cày xới...." ---> Nó hiển thị đúng không bạn?
 
Upvote 0
dear anh
file gửi lại này quả là rất hay
nhưng em thấy khi gửi nó lại gửi hết luôn
lệnh yes ở cột j không còn tác dụng
anh có thể xem lại được không anh
thanks
 
Upvote 0
Gửi mail thông báo tự động

Chào các bác

Em hiện giờ đang có 1 file excel, em muốn dùng file này để gửi mail thông báo lương tự động đến từng người. Mỗi người sẽ nhận được mail đính kèm file excel, nội dung file đính kèm là thông báo lương tương ứng với tên từng người trong file. Nội dung em muốn lấy là từ cột D1 đến cột BO1, cột cuối cùng là email của từng người nhận. Em gửi qua MS Outlook 2007 các bác nhé.

Trong file này em có 1 số dữ liệu được lấy bằng cách lookup từ 1 số file khác, không biết có vấn đề gì không ạ?

Em kém VBA lắm, nên mong các bác giúp em. Em xin cảm ơn các bác trước ạ!
 

File đính kèm

  • ND TB luong can.xls
    43 KB · Đọc: 93
Upvote 0
Web KT
Back
Top Bottom