Đây là đoạn mã VBA để xuất một file Excel sang PDF với mật khẩu ngẫu nhiên và gửi qua email
Để sử dụng mã này, bạn cần chắc chắn rằng mình đã thêm tham chiếu tới thư viện Microsoft Outlook và Microsoft Scripting Runtime.
Sub ExportExcelToPDFAndSendEmail()
Dim ws As Worksheet
Dim pdfFileName As String
Dim pdfFilePath As String
Dim emailAddress As String
Dim tempFolder As String
Dim pdfPassword As String
Dim objOutlook As Object
Dim objMail As Object
Dim body As String
' Đặt tên file PDF và thư mục tạm
Set ws = ThisWorkbook.Sheets(1)
pdfFileName = ws.Name & ".pdf"
tempFolder = Environ("TEMP") & "\"
pdfFilePath = tempFolder & pdfFileName
' Tạo mật khẩu ngẫu nhiên
pdfPassword = GenerateRandomPassword(8)
' Xuất worksheet sang PDF với mật khẩu
ws.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=pdfFilePath, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False, _
Password:=pdfPassword
' Địa chỉ email
emailAddress = "[email protected]" ' Thay thế bằng địa chỉ email của bạn
' Tạo email
Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)
' Thiết lập nội dung email
body = "File PDF của bạn đã được tạo và bảo vệ bằng mật khẩu." & vbCrLf & _
"Mật khẩu: " & pdfPassword & vbCrLf & _
"Vui lòng kiểm tra file đính kèm."
With objMail
.To = emailAddress
.Subject = "PDF File with Password"
.Body = body
.Attachments.Add pdfFilePath
.Send
End With
' Xoá file PDF tạm
Kill pdfFilePath
' Giải phóng đối tượng
Set objMail = Nothing
Set objOutlook = Nothing
End Sub
Function GenerateRandomPassword(length As Integer) As String
Dim chars As String
Dim i As Integer
Dim charIndex As Integer
Dim password As String
chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
password = ""
For i = 1 To length
charIndex = Int((Len(chars) * Rnd) + 1)
password = password & Mid(chars, charIndex, 1)
Next i
GenerateRandomPassword = password
End Function
Hướng dẫn:
- Sao chép mã trên và dán vào một Module trong VBA Editor của Excel (Alt + F11 để mở VBA Editor, sau đó chọn Insert > Module).
- Đảm bảo rằng bạn đã thêm tham chiếu đến Microsoft Outlook Library và Microsoft Scripting Runtime:
- Vào Tools > References.
- Tìm và chọn “Microsoft Outlook xx.x Object Library” và “Microsoft Scripting Runtime”.
- Chạy hàm
ExportExcelToPDFAndSendEmail
để xuất file PDF với mật khẩu ngẫu nhiên và gửi email.
Thay thế [email protected]
bằng địa chỉ email mong muốn. Mật khẩu ngẫu nhiên sẽ được tạo với độ dài 8 ký tự, bạn có thể điều chỉnh độ dài theo ý muốn bằng cách thay đổi tham số trong hàm GenerateRandomPassword
.