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
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

  • GỬI MAIL.xls
    56.5 KB · Đọc: 42
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

  • Phieu luong T10.docx
    23.9 KB · Đọc: 25
  • mau data goc.xlsx
    10.1 KB · Đọc: 24
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

  • SendMailWithAttachFile.xlsm
    20.8 KB · Đọc: 143
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

  • guimail 1.0 (2).xls
    53.5 KB · Đọc: 11
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

  • Payslip gui email.xlsm
    107.4 KB · Đọc: 34
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
Web KT
Back
Top Bottom