Hoa Mai Phương
Hoa Mai Phương
Thảo luận 7 thảo luận
Vỗ tay 0 vỗ tay
Lượt xem 256 lượt xem

min min là bài tập in phiếu lương hàng loạt mình có thể ứng dụng thêm

Chào admin, admin cho em hỏi là bài tập in phiếu lương hàng loạt, mình có thể ứng dụng thêm bằng cách sau khi xuất được file PDF phiếu lương của người lao động trong tháng, mình có thể viết được thêm 1 file macro tự động gửi tất cả file PDF phiếu lương này đến địa chỉ email của nhân viên không ạ?

Tất nhiên là phiếu lương của ai thì gửi đúng cho người đó, hiện tại em đang dùng mail merge trong outlook để làm thao tác này, vậy VBA có thể có ứng dụng này không ạ? Nếu có thì mong admin hướng dẫn ạ.

Thảo luận 7 câu trả lời
Lượt xem 256 lượt xem
Vỗ tay vỗ tay
Hoa Mai Phương 11:08 - Aug 23, 2021

Chào bạn hoàn toàn có thể làm được bạn nhé, bước 1 bạn xuất file ra một thư mục và với mỗi email sẽ gắn active file nhé. 

Vỗ tay vỗ tay
Hoa Mai Phương 11:08 - Aug 23, 2021
cảm ơn admin, admin có thể hướng dẫn mình kỹ hơn cách viết code đó đc k ạ?
Vỗ tay vỗ tay
Hoa Mai Phương 13:08 - Aug 23, 2021

Chào bạn bạn làm như sau

B1: Xuất file in hàng loạt ra dạng pdf ở thư mục với tên chỉ định(theo tên nv)

B2: Dùng vòng lặp theo tên chỉ định đó lấy ra email và link gửi phiếu lương

B3 active file và gửi email nhé.

Vỗ tay vỗ tay
Hoa Mai Phương 11:08 - Aug 27, 2021

Admin cho mình hỏi đoạn code bôi vàng bên dưới, lấy file attach theo tên chỉ định (sau khi đã lưu file PDF vào thư mục) viết như nào được ạ? giả sử ô I13 mình đã Vlookup Email theo mã nhân viên.

Thank admin



Vỗ tay vỗ tay
Hoa Mai Phương 11:08 - Aug 27, 2021

chào bạn phần tên file đã xuất hiện chưa nhỉ? bạn xem ví dụ sau nhé

https://stackoverflow.com/questions/5...

Public Sub AttachFileToEmail()

    Dim OutApp As Object
    Dim OutMail As Object
    Dim sourceTable As ListObject
    Dim evalRow As ListRow

    Dim counter As Long
    Dim toArray() As Variant

    Dim strDir As String
    Dim file_name_import As String
    Dim fName As String

    Application.ScreenUpdating = False

    Set OutApp = CreateObject("Outlook.Application")

    ' Excel details not recreated, not needed for this question

    file_name_import = Format(Now, "yyyy-mm-dd hh-mm-ss")
    file_name_import = file_name_import & " - File 1.xlsx"

    ' Subscript out of range error would be bypassed due to poor error handling
    'Worksheets("Sheet 1").Copy
    Worksheets("Sheet1").Copy

    ' Trailing backslash error would be bypassed due to poor error handling
    'ChDir "H:\Folder 1\Folder 2\Folder 3\Folder 4\"

    strDir = "C:\Folder 1\Folder 2\Folder 3\Folder 4\"
    Debug.Print strDir

    ' Backslash already at end of strDir
    fName = strDir & "File 1" & file_name_import
    Debug.Print fName

    ActiveWorkbook.SaveAs FileName:=fName, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False

    ' Setup the email
    Set OutMail = OutApp.CreateItem(0)

    ' Do not use On Error Resume Next without a specific reason for bypassing errors
    ' Instead fix the errors now that you can see them

    With OutMail

        ' Excel details not recreated, not needed for this question

        .Subject = "Reminder"

        .Body = "Dear All" _
                & vbNewLine & vbNewLine & _
                "Please comply with the transfers in the attached file. " & _
                "Look up for your store and process asap."

        .Attachments.Add fName

        .Display

    End With

    Set OutMail = Nothing

cleanup:
    Set OutApp = Nothing
    Application.ScreenUpdating = True

End Sub
Vỗ tay vỗ tay
Hoa Mai Phương 17:08 - Aug 27, 2021

Cảm ơn admin mình làm được rồi nhé ^^

Vỗ tay vỗ tay
Hoa Mai Phương 17:08 - Aug 27, 2021

chúc bạn học tốt cùng gitiho

Vỗ tay vỗ tay
Câu hỏi liên quan
@ 2020 - Bản quyền của Công ty cổ phần công nghệ giáo dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở kế hoạch và đầu tư TP. Hà Nội